题目:
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.
描述:
求所给数组的最大子串和
分析:
只知道线性时间算法的思路
唯一需要注意的是中间计算过程可能超过int型的范围
代码:(时间复杂度,O(n))
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int len = nums.size();
if (!len) {
return 0;
}
long long result = nums[0], temp = nums[0];
for (int i = 1; i < len; ++ i) {
if (temp <= 0) {
temp = 0;
}
temp += nums[i];
if (temp > result) {
result = temp;
}
}
return (int)result;
}
};