发布时间:2023-12-02 18:00
题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
思想:利用滑动窗口的思想,先计算一段窗口内的数据和,如果满足条件再逐一减掉先前元素,直到不再符合条件,达到窗口不断往右滑的目的。最后返回的是长度最小的窗口长度。
var minSubArrayLen = function(target, nums) {
var sum = 0;
var i = 0; //滑动窗口的起始位置
var resLength = nums.length + 1; //先设置一个初始结果长度,反正总不可能超过总长度
for (var j = 0; j < nums.length; j++) { //j来代表窗口的右端序列(窗口结尾)
sum = sum + nums[j]; //先求出窗口内的数据和
while (sum >= target) { //在和大于目标值的前提下进行
var subLength = j - i + 1; //滑动窗口的长度,即有几位数字
resLength = resLength < subLength ? resLength : subLength; //更新结果数组的长度
sum = sum - nums[i]; //先从左往右减掉一个值看看,即滑动窗口
i++; //i起到滑动的效果
}
}
return resLength == nums.length + 1 ? 0 : resLength;
};
console.log(minSubArrayLen(4, [1, 4, 4]));
SAP AppGyver 的 Universal Theme System 使用介绍
什么是微软 Edge Tracking Prevention 的 Org Relationship Mitigation 策略
全国大学生数学建模竞赛(CUMCM)历年试题(查看超级方便)
HarmonyOS和iOS,鸿蒙系统再受质疑 鸿蒙HarmonyOS 2.0与安卓/ios的区别
pytest使用@pytest.mark.parametrize()实现参数化的示例代码
android智慧停车场代码,计算机视觉实战(十三)停车场车位识别(附完整代码)