- 最小子数组
给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。
注意事项
子数组最少包含一个数字
您在真实的面试中是否遇到过这个题?
Yes
样例
给出数组[1, -1, -2, 1],返回 -3
相关题目
思路:定义一个当前sum和上一个最小的sum,因为是求最小组和嘛!所以如果当前sum<0就继续加,并且接下来要和上一个最小的sum比较求最小值,而大于0的话就要重新赋值nums[i]给它。
AC代码:
class Solution {
public:
/*
* @param nums: a list of integers
* @return: A integer indicate the sum of minimum subarray
*/
int minSubArray(vector<int> &nums) {
// write your code here
int currentSum=0;//当前sum
int maxSum=99999;//上一个最小sum
for(int i=0;i<nums.size();i++){
if (currentSum < 0) {
currentSum += nums[i];
}else {
currentSum = nums[i];
}
maxSum =min(maxSum, currentSum);
}
return maxSum;
}
};
网友评论