跳过正文
  1. 全部/
  2. 笔记/
  3. LeetCode/

013 滑动窗口

问题单调才能用滑窗

sum := 0
l := 0
for r := 0; r < n; r++ {
	更新窗口sum += nums[r]
	for 满足条件可以收缩(l <= r && 条件) {
		sum -= nums[l]
		l++
	}
	if 可以更新答案 {
		更新答案minLength = r - l + 1
	}
}
// 窗口[l, r]

双指针

func maxArea(height []int) int {
    l, r := 0, len(height)-1
    res := 0
    for l <= r {
        res = max(res, (r-l)*min(height[l], height[r]))
        if height[l] < height[r] {
            l++
        } else {
            r--
        }
    }
    return res
}
Reply by Email