ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

小白Leetcode初体验

2021-09-28 20:03:48  阅读:153  来源: 互联网

标签:初体验 nums max sums bug 小白 let sums1 Leetcode


Leetcode#53 最大子序和

1.题目叙述

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

2.题目分析

之前有段时间想转码来着,所以稍微看过小一点数据结构,当时好像有看到这道题,给了很多解法,有 O ( n 2 ) O(n^2) O(n2)的暴力循环,也有 O ( n l o g n ) O(nlogn) O(nlogn)的二分法,最后给出的动态规划的解法复杂度仅为 O ( n ) O(n) O(n),令我印象深刻。

3.具体代码

var maxSubArray = function(nums) {
//动态规划的问题
sums=nums[0];
sums1=nums[0];
for(let i=1;i<nums.length;i++)
{
if (sums<0)
{
    sums=nums[i];
}else
{
    sums=sums+nums[i];
}
if(sums>sums1)
{
    sums1=sums;
}

}

return sums1;
};

4.总结反思

这道题是见过的,方法也是知道的,但是真的是很不熟练,具体操作细节磨了好久,属于是面向bug的编程了。最深的感触是,每次有bug都是只修补bug的那一点,而拆了东墙补西墙。以后刷题要注意规划,要先从顶层架构着手,在心里跑一遍,再具体根据bug的特点修改,不要走重复的路线。

5.他山之石

var maxSubArray = function(nums) {
    let max = nums[0];
    let tmp = 0;
    for(let i=0;i<nums.length;i++){
        tmp = Math.max(tmp+nums[i],nums[i]);
        max = Math.max(max,tmp);
    }
    return max;
};

我深刻体会到,调用高级语言固有函数的优越性,但是奈何是初学者,就先暴力就完事了。

标签:初体验,nums,max,sums,bug,小白,let,sums1,Leetcode
来源: https://blog.csdn.net/qq_41699047/article/details/120536197

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有