53. Maximum Subarray
53. Maximum Subarray
题目
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.
click to show more practice.
More practice:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
解析
- 两个if的先后顺序
// add 53. Maximum Subarray
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int ret = INT_MIN;
int temp = 0;
for (int i = 0; i < nums.size();i++)
{
temp += nums[i];
if (temp>ret) // //两个if的先后顺序
{
ret = temp;
}
if (temp < 0)
{
temp = 0;
}
}
return ret;
}
int maxSubArray(int A[], int n) {
vector<int> vec(A,A+n);
return maxSubArray(vec);
}
};
题目来源
C/C++基本语法学习
STL
C++ primer