数组二:长度最小的子数组
2021-05-13 本文已影响0人
程一刀
题目地址: https://leetcode-cn.com/problems/minimum-size-subarray-sum/
题目描述: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。
示例:
输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。
参考代码:
class Solution1 {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int i = 0;
int j = 0;
int sum = 0;
int result = INT32_MAX;
for (; j<nums.size(); j++) {
sum = sum + nums[j];
if (sum >= s) {
// int lenth = j-i+1;
// result = result > lenth? lenth:result;
while (sum>=s) {
if (result > (j- i+1)) {
result = j - i +1;
}
sum = sum -nums[i++];
}
}
}
if (result == INT32_MAX) {
result = 0;
}
return result;
}
};
int main(int argc, const char * argv[]) {
// insert code here...
vector<int> data = {2,3,1,2,4,3};
Solution1().minSubArrayLen(7, data);
return 0;
}