class Solution { public: int maxSubArray(vector<int>& nums) { int len=nums.size(); if(len==1)//特殊情况 return nums[0]; int max_num=INT_MIN,sum_num=0;//注意这里max_num初始化为INT_MIN,以防数组全为负的情况 for(int i=0;i<len;i++) { sum_num+=nums[i]; if(nums[i]>sum_num)//如果当前求和值还不如我大,要他们何用 sum_num=nums[i]; if(sum_num>max_num)//一路比较最高值 max_num=sum_num; } return max_num;//返回即可 } };
分析:
这个题在剑指offer上见过,所以思路还在,写的也算快,唯一有错误的是max_num初始化,我没有考虑全负的情况(也是自己写的有点快,自我感觉太熟了还真不好)。