题目描述: 最大子序和
给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。
例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4],
连续子序列 [4,-1,2,1] 的和最大,为 6。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
进阶:
如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。
java
class Solution {
public int maxSubArray(int[] nums) {
int max = -2147483648;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
if (sum < 0)
sum = 0;
sum += nums[i];
if (sum > max) {
max = sum;
}
}
return max;
}
}
cpp
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxn = INT_MIN;
int sum = 0;
for (int i = 0; i < nums.size(); i++) {
if (sum < 0)
sum = 0;
sum += nums[i];
maxn = max(maxn, sum);
}
return maxn;
}
};