2025-06-03 lc209. Minimum Size Subarray Sum


date: 2025-06-04 name: aliases: tags:

  • leetcode
  • python
  • 双指针 date_last_edit: 2025-06-04 00:31 —

    2025-06-04

— creation date: 2025-06-04 00:31 — modification date: 星期三 4日 六月 2025 00:31:47

209. Minimum Size Subarray Sum

之前写过, 但是没写过一遍这样的思路, 感觉重新做已经有点忘记了, OK, 现在这样新写一遍吧, 我新看了一遍题目, 感觉是滑动窗口的最简单版本的题目

直接写吧

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        left = 0
        right = 0
        win = []
        ans = 0
        n = len(nums)
        while right < n:
            

混乱的写法, 突然发现其实不需要这个 win 来存实际的数组, 我只要知道这个 sum 值就行了, 于是

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        left = 0
        right = 0
        # win = []
        ans = 0
        n = len(nums)
        while right < n:
            if sum
            # win.append(nums[right])
            right += 1

我改成了, 一个 ` sum_win` 的值 finally 写成了这样错了,

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        left = 0
        right = 0
        sum_win = 0
        ans = math.inf
        n = len(nums)
        while right < n:
            
            while sum_win >= target:# 不应该用if, 应该用while
                ans = min(ans,right - left)
                sum_win -= nums[left]
                left += 1
            
            sum_win += nums[right]
            right += 1
        return ans if ans != math.inf else 0

问了 gpt, 改正很简单, 就是放到前面去

class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        left = 0
        right = 0
        sum_win = 0
        ans = math.inf
        n = len(nums)
        while right < n:
            sum_win += nums[right]
            right += 1
            while sum_win >= target:# 不应该用if, 应该用while
                ans = min(ans,right - left)
                sum_win -= nums[left]
                left += 1
        return ans if ans != math.inf else 0

思考: 为什么会出现这个逻辑上的错误, 改成正确的代码其实很简单,但是我其实想知道的是如何从直觉的角度去修正这个问题。

滑窗三部曲:扩、判、缩。

2025

2025-06-03 lc704. Binary Search

3 minute read

date: 2025-06-03 name: aliases: tags: leetcode python BinarySearch date_last_edit: 2025-06-03 16:46 — 2025-06-03

Back to top ↑

2024

Back to top ↑

2023

Back to top ↑