您的位置:首页 > 编程语言

LintCode【简单】44. 最小子数组 。代码及思路

2018-02-01 15:27 393 查看

题目要求:

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


 注意事项


子数组最少包含一个数字

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

Yes

样例

给出数组[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;
8de0
for(i = 0; i < nums.size(); i++){
sum += nums[i];
if(sum > 0){
sum = 0;
}
if(sum < min){
min = sum;
}
}
return min;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: