以下是一个 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

C++ 最小连续子数组长度 - 求解和不小于目标值的最小连续子数组

原文地址: https://www.cveoy.top/t/topic/pPps 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录