前言
又到了周五了,hxdm还在写bug吗?歇会儿看看掘金吧!
题目描述
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
输入:nums = [1]
输出:1
示例 3:
输入:nums = [0]
输出:0
示例 4:
输入:nums = [-1]
输出:-1
示例 5:
输入:nums = [-100000]
输出:-100000
提示:
- 1 <= nums.length <= 3 * 10^4
- -10^5 <= nums[i] <= 10^5
解题思路
看到题目求最大子序和,很简单,我直接上来就是一个for循环,从1开始,和前一项做比较,如果前一项>0,那么就用当前项加上前一项,为什么要用前一项>0来作为条件呢?题目要求是最大子序和嘛,如果是<0,那么就跳过从下一项开始,最后原数组就变成了一个计算后的结果数组,然后求结果数组的最大值就行了。
解题代码
var maxSubArray = function(nums) {
const n = nums.length;
for (let i = 1; i < n; i++) {
if (nums[i-1] > 0) {
nums[i] += nums[i-1]
}
}
return Math.max.apply(this, nums)
}
刷题打卡记录
这里是之前的刷题打卡记录,大家有兴趣的可以看下,如果有什么不同的见解和看法或者觉得有什么错误的,欢迎在评论区留言!🙏🙏🙏
[LeetCode0303题区域和检索 - 数组不可变] | 刷题打卡
[LeetCode0304题二维区域和检索 - 矩阵不可变] | 刷题打卡
[LeetCode236题二叉树的最近公共祖先] | 刷题打卡
总结
多写写题解还是很有必要的,不要怕写的不好,写的过程就是回顾的过程,更容易加深自己的理解。
加油!hxdm!!!💪💪💪
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情