[LeetCode53题最大子序和] | 刷题打卡

520 阅读2分钟

前言

又到了周五了,hxdm还在写bug吗?歇会儿看看掘金吧!

题目描述

53. 最大子序和.

给定一个整数数组 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题区域和检索 - 数组不可变] | 刷题打卡

[LeetCode1200. 最小绝对差] | 刷题打卡

[LeetCode0304题二维区域和检索 - 矩阵不可变] | 刷题打卡

[LeetCode11题盛最多水的容器] | 刷题打卡

[LeetCode0338题比特位计数] | 刷题打卡

[LeetCode209题长度最小的子数组] | 刷题打卡

[LeetCode236题二叉树的最近公共祖先] | 刷题打卡

[LeetCode141题环形链表] | 刷题打卡

总结

多写写题解还是很有必要的,不要怕写的不好,写的过程就是回顾的过程,更容易加深自己的理解。

加油!hxdm!!!💪💪💪

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情