最大子数组和

简介: 最大子数组和

最大子数组和

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

子数组 是数组中的一个连续部分。

示例 1:

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

一、解题思路

看到子数组子串想想每个位置结尾是答案是什么
如果子数组必须以0结尾,它往左扩到什么程度,能让累加和最大
如果子数组必须以1位置结尾,它往左扩到什么程度,能让累加和最大

假设我每一个i位置的答案都能求出来,这个答案是什么,就是子数组必须以i位置的数结尾的情况下,它往左边能够扩多大能够让累加和最大,如果这个我都能求出来,那么答案一定在所有的,比如0位置结尾的答案1位置结尾的答案.一定在所有位置值结尾答案之中求个max就可以了。

可能性划分必须以i位置结尾答案可能来自什么?
1)完全不向左扩,只有自己
2)要向左扩, i-1结尾的时候扩出来的最好,决定了当前能扩出来的最好

二、代码

class Solution {
    public int maxSubArray(int[] nums) {
        int max=nums[0];
        int pre=nums[0];
        for(int i=1;i<nums.length;i++){
            int cur=nums[i]>nums[i]+pre?nums[i]:nums[i]+pre;
            max=Math.max(cur,max);
            pre=cur;
        }
        return max;
    }
}
相关文章
|
算法
【学会动态规划】最大子数组和(19)
【学会动态规划】最大子数组和(19)
52 0
|
5月前
|
算法
LeetCode第53题最大子数组和
LeetCode第53题"最大子数组和"的解题方法,利用动态规划思想,通过一次遍历数组,维护到当前元素为止的最大子数组和,有效避免了复杂度更高的暴力解法。
LeetCode第53题最大子数组和
|
3月前
169. 多数元素、53.最大子序列和、50. 实现 pow()(2021-11-04)
169. 多数元素、53.最大子序列和、50. 实现 pow()(2021-11-04)
15 0
|
3月前
|
算法 C++
Leetcode第53题(最大子数组和)
这篇文章介绍了LeetCode第53题“最大子数组和”的动态规划解法,提供了详细的状态转移方程和C++代码实现,并讨论了其他算法如贪心、分治、改进动态规划和分块累计法。
79 0
|
算法
【算法专题突破】双指针 - 四数之和(8)
【算法专题突破】双指针 - 四数之和(8)
37 0
|
算法 Java 测试技术
dp算法 力扣152乘积最大子数组
dp算法 力扣152乘积最大子数组
|
人工智能
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
116 0
|
算法
leetcode 53 最大子数组和
leetcode 53 最大子数组和
63 0
leetcode 53 最大子数组和
|
机器学习/深度学习 测试技术
【LeetCode】最大子数组和
【LeetCode】最大子数组和
【LeetCode】最大子数组和
|
算法 Python
Leedcode 两数、三数、四数之和总结
Leedcode 两数、三数、四数之和总结
145 0
Leedcode 两数、三数、四数之和总结

热门文章

最新文章