44. 最小子数组

2017-12-20  本文已影响0人  李清依

  1. 最小子数组

给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。

注意事项

子数组最少包含一个数字

您在真实的面试中是否遇到过这个题?

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;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读