leetcode-连续子数组的最大和-53
Posted 天津 唐秙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-连续子数组的最大和-53相关的知识,希望对你有一定的参考价值。
题目要求
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
思路
使用动态规划,子问题:局部数字构成的数组的最大连续和,转移方程F(i)=max(F(i-1)+a[i],a[i]),初始状态:F(0)=a[0],如果想要求n个数组中的最大连续子数组的和,就要先求前n-1个,用前n-1个同n个进行判断,取最大值。
代码实现
class Solution {
public int maxSubArray(int[] nums) {
int cur = nums[0];//用来记录当前的值
int max = nums[0];
int prev = 0;//用来记录前n-1个值的最大值
for (int num : nums)
{
cur = num;
if (prev > 0)
cur = prev + cur;
if (cur > max)
max = cur;
prev = cur;
}
return max;
}
}
以上是关于leetcode-连续子数组的最大和-53的主要内容,如果未能解决你的问题,请参考以下文章