剑指Offer-42:连续子数组的最大和
2018-03-11 11:40
381 查看
题目:
输入一个整型数组,数组里有整数也有负数。数组汇总的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例子:
如输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},输出为该子数组的和18。链接:
剑指Offer(第2版):P218LeetCode-53:Maximum Subarray (和最大的连续子数组):
http://blog.csdn.net/koala_tree/article/details/78367481
思路标签:
算法:动态规划解答:
动态规划的思想。(时间复杂度:O(n))
应用动态规划的思想;前k个连续子数组的和为Sum,如果Sum > 0,则前k个数的和对第k+1个数有正影响,故Sum = Sum + A[k];
如果Sum < 0,则前面k个数的和对第k+1个数有负影响,故Sum = A[k];
另外,保存整个过程中的最大值:maxSum,该数即为最大连续子数组的和。
注意,算法并没有记录最大和的连续子数组。
class Solution { public: int FindGreatestSumOfSubArray(vector<int> array) { int length = array.size(); if(length == 0) return 0; int sum = 0; int maxSum = array[0]; for(int i=0; i<length; ++i){ sum += array[i]; if(maxSum < sum) maxSum = sum; if(sum < 0) sum = 0; } return maxSum; } };
相关文章推荐
- 【剑指offer】面试题42:连续子数组的最大和
- 【剑指offer】面试题 42:连续子数组的最大和
- 【剑指offer】面试题31-连续子数组的最大和问题
- 剑指offer:连续子数组的最大和
- 剑指offer-面试题31-连续子数组的最大和
- 【剑指Offer面试题】 九度OJ1372:最大子向量和(连续子数组的最大和)
- 剑指offer--连续子数组的最大和
- 码农小汪-剑指Offer之27 -连续子数组的最大和
- [剑指offer]连续子数组的最大和
- 剑指Offer之 - 连续子数组的最大和
- 剑指offer——连续子数组的最大和(动规或者普通算法,不错)
- 剑指offer 连续子数组的最大和
- 【剑指offer】连续子数组最大和
- 【剑指offer】连续子数组的最大和
- 【面试题】剑指Offer-31-求连续子数组的最大和
- [剑指offer]连续子数组的最大和
- 剑指OFFER之最大子向量和(连续子数组的最大和)(九度OJ1372)
- 剑指Offer------连续子数组的最大和
- 剑指offer31——连续子数组的最大和
- 【剑指offer】连续子数组的最大和