53. Maximum Subarray
這題我跪了!!!
題目原文
Given an integer array nums
, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
Follow up:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
解題思路
程式解答
Kadane's Algorithm O(n)
class Solution
{
public:
int maxSubArray(vector<int>& nums)
{
int max, sum;
max = sum = nums[0];
for (int i = 1; i < nums.size(); i++)
{
sum = std::max(nums[i], sum + nums[i]);
max = std::max(max, sum);
}
return max;
}
};
Last updated
Was this helpful?