題目: LeetCode - 53. Maximum Subarray

題目說明

給一個陣列,找到具有最大總和的連續子陣列 ( 至少包含一個數字 ),並回傳其總和。

解題思路

使用動態規劃的觀念,最大值為 mx + nums[i]nums[i] 兩者取較大者,並隨時更新結果即可。

參考解法

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
int maxSubArray(vector<int>& nums)
{
int mx = nums[0], res = mx, n = nums.size();
for(int i = 1; i < n; ++i)
{
mx = max(mx + nums[i], nums[i]);
res = max(res, mx);
}
return res;
}
};