/****************************
   Name:  Maximum Subarray 最大连续数组和
   Date: 01/28/2016
   Author: Hualin Li
   Description: This is the Maximum Subarray in the C++. 第二题选择的是DP,也许还是天意吧...
   做题感想:该题目有两种经典解法。我个人喜欢DP的解法。之前想了半个小时为什么这个方法可以
   凑效。后来在草稿上一比划就明白了,如果有朋友和我一个一开始卡住的话,只要记住两个要点:
   (1)从左往右加数列元素时,只要sum不为负数,这个sum就是有效有用的。(2)一旦sum为负数,
   则用sum=0来从新计数。
   
*****************************/
class Solution {
public:
    int maxSubArray(vector<int>&nums) {
        int sum=0;
	int getMax=INT_MIN;//That is the min value int can have 
		
         for(int i=0;i<nums.size();i++)
	{
	sum=sum+nums[i];
	getMax=max(sum,getMax);
	//If sum <0,reselect i for next candidate
	if(sum<0)
	sum=0;
	}
	return getMax;
    }
};

  
回到主页 回到目录