江西省住房和城乡建设厅的网站,公司做个网页要多少钱,企业网站优化做法,网站建设外包网给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] #xff0c;并返回其长度**。**如果不存在符合条件的子数组#xff0c;返回 0 。
示例 1#xff1a;
输入1, ..., numsr-1, numsr] 并返回其长度**。**如果不存在符合条件的子数组返回 0 。
示例 1
输入target 7, nums [2,3,1,2,4,3]
输出2
解释子数组 [4,3] 是该条件下的长度最小的子数组。示例 2
输入target 4, nums [1,4,4]
输出1示例 3
输入target 11, nums [1,1,1,1,1,1,1,1]
输出0提示
1 target 1091 nums.length 1051 nums[i] 105使用滑动窗口算法
C代码实现
#include array_algorithm.hint minSubArrayLen(int target, vectorint nums) {int resutlt_out INT32_MAX;int sum 0; int i 0; int subarray_Length 0; for (int j 0; j nums.size(); j) {sum nums[j];while (sum target) {subarray_Length (j - i 1); resutlt_out resutlt_out subarray_Length ? resutlt_out : subarray_Length;sum - nums[i]; // 通过删除子数组起始位置对应的值并使i加一从子数组和的角度实现起始位置变化即加1。}}return resutlt_out INT32_MAX ? 0 : resutlt_out;
}python实现
from typing import Listdef minSubArrayLen(target: int, nums: List[int]) - int:sub_array_len 0sum 0i 0resutle_out float(inf)for j in range(0, len(nums)):sum nums[j]while sum target: sub_array_len j - i 1resutle_out min(resutle_out, sub_array_len)sum - nums[i]i 1return resutle_out if resutle_out ! float(inf) else 0