最大子数组和

简介: 最大子数组和

最大子数组和

给你一个整数数组 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;
    }
}
相关文章
|
8月前
|
算法
【学会动态规划】最大子数组和(19)
【学会动态规划】最大子数组和(19)
28 0
|
13天前
18.四数之和
18.四数之和
|
1月前
18. 四数之和
18. 四数之和
25 2
|
算法
leetcode 53 最大子数组和
leetcode 53 最大子数组和
45 0
leetcode 53 最大子数组和
|
机器学习/深度学习 测试技术
【LeetCode】最大子数组和
【LeetCode】最大子数组和
【LeetCode】最大子数组和
|
算法 Python
Leedcode 两数、三数、四数之和总结
Leedcode 两数、三数、四数之和总结
110 0
Leedcode 两数、三数、四数之和总结
最大子数组
最大子数组
56 0
|
算法 测试技术
贪心——53. 最大子数组和
本专栏按照数组—链表—哈希—字符串—栈与队列—二叉树—回溯—贪心—动态规划—单调栈的顺序刷题,采用代码随想录所给的刷题顺序,一个正确的刷题顺序对算法学习是非常重要的,希望对大家有帮助
贪心——53. 最大子数组和
|
人工智能
洛谷P1115-最大子段和(DP-最大子段和)
洛谷P1115-最大子段和(DP-最大子段和)
洛谷P1115-最大子段和(DP-最大子段和)
|
算法
LeetCode-53. 最大子数组和(day11)
LeetCode-53. 最大子数组和(day11)
100 0