C++ 最小连续子数组长度 - 求解和不小于目标值的最小连续子数组
以下是一个 C++ 的解决方案:
#include <iostream>
#include <vector>
int minSubArrayLen(int s, std::vector<int>& nums) {
int n = nums.size();
int left = 0, right = 0;
int sum = 0, minLength = INT_MAX;
while (right < n) {
sum += nums[right];
while (sum >= s) {
minLength = std::min(minLength, right - left + 1);
sum -= nums[left];
left++;
}
right++;
}
return minLength == INT_MAX ? 0 : minLength;
}
int main() {
int s;
std::cout << "输入整数s: ";
std::cin >> s;
int n;
std::cout << "输入数组长度n: ";
std::cin >> n;
std::vector<int> nums(n);
std::cout << "输入数组元素: ";
for (int i = 0; i < n; i++) {
std::cin >> nums[i];
}
int result = minSubArrayLen(s, nums);
std::cout << "最少需要选取的连续数的个数: " << result << std::endl;
return 0;
}
运行示例:
输入整数s: 7 输入数组长度n: 6 输入数组元素: 2 3 1 2 4 3 最少需要选取的连续数的个数: 2
原文地址: https://www.cveoy.top/t/topic/pPps 著作权归作者所有。请勿转载和采集!