53. Maximum Subarray

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     int maxSubArray(vector<int>& nums) 
12     {
13         int res=nums[0],i=0,sum=0;
14         int sz=nums.size();
15         while(i<sz)
16         {
17             sum+=nums[i];
18             res=max(res,sum);
19             sum=max(sum,0);
20             ++i;
21         }
22         return res;
23     }
24 };

从前向后扫描,设置一个变量res存放结果,一个sum存放当前值。

扫描一次,将结果累加至sum,并比较sum和res,较大值赋给res

然后判定sum,若sum为负值,则将其置为0。

这样一遍扫下来,res中即为和最大的子串

 

猜你喜欢

转载自www.cnblogs.com/zhuangbijingdeboke/p/8856171.html