// 209(连续子数组)
// time: O(n)
function minSubArrayLen(s, nums) {
let l = 0, r = -1; // nums [l..r] 滑动窗口
let sum = 0
let res = nums.length + 1
while (l < nums.length) {
if (r + 1 < nums.length && sum < s) {
sum += nums[++r]
} else {
sum -= nums[l++]
}
if (sum >= s) {
res = Math.min(res, r - l + 1)
}
}
if (res === nums.length + 1) {
return 0
}
return res
}
const r = minSubArrayLen(8, [1, 2, 3, 4, 8, 5])
// console.log(r)
function maxSubArrayLen(nums) {
let l = 0, r = 0
let maxLength = 0
let max = 0
while (r < nums.length) {
// console.log(r)
if (nums[r] >= max) {
max = nums[r]
if (r === nums.length - 1) {
maxLength = Math.max(maxLength, r - l + 1)
return maxLength
}
} else {
maxLength = Math.max(maxLength, r - l)
l = r
max = nums[l]
}
r++
}
return maxLength
}
const m = maxSubArrayLen([2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 3, 4, 4, 5])
console.log(m)
连续子数组-209
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 思想:left,right指定一个数组长度 值大于s,sum=sum-left,left++,缩小窗口,直到小于s...
- 零子数组:对于长度为N的数组,求连续子数组和和最接近0的值和子数组最大连续子数组:给定一个数组A,求A的连续子数组...
- 给出一个由[-100,100]之间整数组成的数组,求其相加和最大的连续子数组解题:时间复杂度为O(N),也能解决最...
- 最近碰到一个很有意思的计算题: 求一个整数数组中和最大的连续子数组,例如:[1, 2, -4, 4, 10, -3...
- 题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如...