From ebd673193a1a9e89f36752e1c6768d75aa26d955 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 30 Oct 2026 20:18:06 +0800 Subject: [PATCH] =?UTF-8?q?Update=2057.2=20=E5=92=8C=E4=B8=BA=20S=20?= =?UTF-8?q?=E7=9A=84=E8=BF=9E=E7=BB=AD=E6=AD=A3=E6=95=B0=E5=BA=8F=E5=88=97?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充滑动窗口解法的思路说明与执行示例,并完成样例输出的文字校对。 --- notes/57.2 和为 S 的连续正数序列.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/notes/57.2 和为 S 的连续正数序列.md b/notes/57.2 和为 S 的连续正数序列.md index 5ab87287..6389c274 100644 --- a/notes/57.2 和为 S 的连续正数序列.md +++ b/notes/57.2 和为 S 的连续正数序列.md @@ -10,11 +10,15 @@ ```text [9, 10, 11, 12, 13, 14, 15, 16] -[18, 19, 20, 21, 22]。 +[18, 19, 20, 21, 22] ``` ## 解题思路 +用滑动窗口 start~end 表示当前的连续正数序列,curSum 为它们的和:和小于 target 时 end 右移扩大窗口,大于 target 时 start 右移缩小窗口,等于时记录结果,再把窗口整体右移一格继续查找。start 和 end 都只增不减,时间复杂度为 O(target)。 + +例如 target = 9 时,窗口依次为 1~2、1~3、1~4(和为 10)、2~4(和为 9,记录)、3~5(和为 12)、4~5(和为 9,记录)……end 到达 target 时结束,结果为 [2, 3, 4] 和 [4, 5]。 + ```java public int[][] fileCombination(int target) { List ret = new ArrayList<>();