给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。
注意事项
子数组最少包含一个数字
样例
给出数组[1, -1, -2, 1],返回 -3
思路
和最大子数组一样,使用贪心算法,贪心选择是采用从顶向下、以迭代的方法做出相继选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。随着算法的进行,将积累起其它两个集合:一个包含已经被考虑过并被选出的候选对象,另一个包含已经被考虑过但被丢弃的候选对象。
class Solution {
public:
/*
* @param nums: A list of integers
* @return: A integer indicate the sum of max subarray
*/
int minSubArray(vector<int> &nums) {
// write your code here
int min=nums[0];
int sum=0;
for(int i=0;i<nums.size();i++){
sum+=nums[i];
if(min>sum){min=sum;}
if(sum>0){sum=0;}
}
return min;
}
};