码迷,mamicode.com
首页 > 编程语言 > 详细

44. 最小子数组

时间:2017-12-30 12:39:07      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:pos   for   ret   span   subarray   class   post   sum   div   

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

 注意事项

子数组最少包含一个数字

样例

给出数组[1, -1, -2, 1],返回 -3

 

动态规划

原数组为nums[]

令S[i]为到i为止的最小和

那么S[i]=min{nums[i], nums[i]+S[i-1] }

basecase: S[0]=nums[0]

为了节省空间,可以结合nums[]和S[]

 1 int minSubArray(vector<int> &nums) {
 2     // write your code here
 3         int sum = nums[0];
 4         int min_sum = nums[0];
 5         for (int i = 1; i<nums.size(); i++) {
 6             sum = min(nums[i], nums[i] + nums[i - 1]);
 7             if (min_sum>sum)
 8             {
 9                 min_sum = sum;
10             }
11             nums[i] = sum;
12         }
13         return min_sum;
14     }

 

 

44. 最小子数组

标签:pos   for   ret   span   subarray   class   post   sum   div   

原文地址:https://www.cnblogs.com/TheLaughingMan/p/8148650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!