classSolution{public:intmaxSubArray(vector<int>& nums){int ret = nums[0],temp =0;for(constauto& num:nums){
temp+=num;
ret =max(temp,ret);
temp =max(temp,0);}return ret;}};
代码实现(二刷自解DAY 138)
classSolution{public:intmaxSubArray(vector<int>& nums){int sum =max(nums[0],0),ret = nums[0];for(int i=1;i<nums.size();++i){
sum += nums[i];
ret =max(sum,ret);if(sum <0) sum =0;}return ret;}};
代码实现(三刷自解 DAY 197 C++ O(n))
classSolution{public:intmaxSubArray(vector<int>& nums){int ret = INT_MIN,tmp =0;for(int i =0;i < nums.size();++i){
tmp += nums[i];
ret =max(ret,tmp);if(tmp <=0) tmp =0;}return ret;}};
代码实现(三刷自解 DAY 197 返回子数组)
classSolution{public:
vector<int>maxSubArray(vector<int>& nums){int left =0,right =1,tmpleft =0,ret = INT_MIN,tmp =0;for(int i =0;i < nums.size();++i){
tmp += nums[i];if(tmp > ret){
ret = tmp;
left = tmpleft;
right = i+1;}if(tmp <=0){
tmpleft = i+1;
tmp =0;}}
vector<int> v;for(int i = left;i < right;++i)
v.emplace_back(nums[i]);return v;}};
代码实现(四刷自解 DAY 268 C++)
classSolution{public:intmaxSubArray(vector<int>& nums){int left =0, retleft =0, retright =0;int sum = nums[0],tmp =(sum >=0? sum :0);int size = nums.size();for(int i =1; i < size;++i){
tmp += nums[i];if(tmp > sum){
sum = tmp;
retleft = left;
retright = i;}if(tmp <0){
left = i;
tmp =0;}}return sum;}};
代码实现(五刷自解 DAY 1 Golang)
funcmax(x, y int)int{if x >= y {return x
}else{return y
}}funcmaxSubArray(nums []int)int{
ret, tmpsum := nums[0],max(nums[0],0)for i :=1; i <len(nums); i++{
tmpsum += nums[i]
ret =max(ret, tmpsum)if tmpsum <0{
tmpsum =0}}return ret
}