LintCode【簡單】44. 最小子陣列 。程式碼及思路
阿新 • • 發佈:2019-01-08
題目要求:
給定一個整數陣列,找到一個具有最小和的子陣列。返回其最小和。
注意事項
子陣列最少包含一個數字
給出陣列[1, -1, -2, 1],返回 -3
思路:
這個和41,最大子陣列如出一轍,這次我寫出來了……
先遍歷一遍,假如所有的數都是大於0的,那麼就返回最小的那個數。 第二遍找最小的和。
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 i; int min = nums[0]; for(i = 0; i < nums.size(); i++){ if(nums[i] < min){ min = nums[i]; } } if(min >= 0){ return min; } int sum = 0; for(i = 0; i < nums.size(); i++){ sum += nums[i]; if(sum > 0){ sum = 0; } if(sum < min){ min = sum; } } return min; } };