标签:
思路:
从头开始,一个个加,ans<0 ,抛弃前面的,从当前位置开始往后加。记录max
注意初始值,可能存在全为负的情况。
1 class Solution { 2 public: 3 int FindGreatestSumOfSubArray(vector<int> array) { 4 if(array.empty()) 5 return 0; 6 7 int ans,max; 8 9 ans=0; 10 max=array[0]; 11 for(int i=0;i<array.size();i++) 12 { 13 if(ans<0) 14 ans=array[i]; 15 else 16 ans+=array[i]; 17 18 if(max<ans) 19 max=ans; 20 } 21 22 return max; 23 24 } 25 };
另外一种动态规划的思路:
1 class Solution: 2 def FindGreatestSumOfSubArray(self, array): 3 if not array: 4 return 0 5 6 dp = [array[0]] 7 8 i = 1 9 for num in array[1:]: 10 if dp[i - 1] <= 0: 11 dp.append(num) 12 else: 13 dp.append(dp[i - 1] + num) 14 i += 1 15 16 return max(dp)
标签:
原文地址:http://www.cnblogs.com/SeekHit/p/5786866.html