//
// Created by lwj on 2022-04-02.
// 求长度最小的连续子数组 解法一 时间复杂度为O(n^2)
//
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int result = INT32_MAX;//这个值用来保存最后要求的满足长度最小的子数组的长度
int sum = 0;// sum用来保存子序列数值之和
int subLength = 0; // 用来保存子序列的长度
for (int i = 0; i < nums.size(); i++) {
sum = 0;
for (int j = i; j < nums.size(); j++) {
sum += nums[j];
if (target <= sum) {
subLength = j - i +1;
result = result < subLength ? result : subLength;
break;
}
}
}
return result == INT32_MAX ? 0 : subLength;
}
};
int main() {
int a[] = {2, 3, 1, 2, 4};
vector<int> cost(a, a + sizeof(a) / sizeof(int)); // 第一个参数表示cost容器中放的是a数组,第二个参数表示是取a数组中的所有元素
Solution solution;
int test = solution.minSubArrayLen(7, cost);
cout << test << endl;
}
解法二 滑动窗口法