会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
在正整数数组里找总和大于等于 target 的最短连续段。全是正数,窗口和随左右端点单调变化,可以用滑动窗口。
- 右端点 right 从左到右扩展,把 numsright 加进窗口。
- 一旦窗口和 ≥target,就用当前长度更新答案,再右移左端点 left 把左边的数吐出去,尽量把窗口缩短。
- 因为数组元素为正,缩短后若还够 target,更短的一定更好;若不够了就继续扩展右端。
- 扫完后如果从未出现过合法窗口,说明整个数组之和都小于 target,输出 0。
- 常见假解:求的是最长段而不是最短段;用 > 而不是 ≥;枚举所有子数组 O(n2) 在 n=105 时超时;存在长度为 1 的解时仍输出更长的窗口。