package
0.0.0-20241220224003-b7cf03a90b2b
Repository: https://github.com/szhou12/leetcode-go.git
Documentation: pkg.go.dev
# README
930. Binary Subarrays With Sum
Solution idea
Sliding Window - 窗口长度可变
- 固定左边界, 右边界延伸至滑窗内的元素的sum恰好为goal. 此时如果知道右边界右边有k个连续的0,那么就意味着以该左边界、元素sum是goal的滑窗就有k+1个
- 对于每个元素,它后面有多少个连续的0,可以提前预处理得到
- 检查左边界超过右边界的情况:
- 如果 goal=0, 就有可能 右边界延伸的loop 无法进入 (因为 sum 初始值也设为0), 这样 右边界无法延伸, 导致出现左边界超过右边界的情况
- e.g.
[0,0,0], sum = 0, goal = 0
- Solution: 右边界延伸的loop添加条件:
left >= right
维护[left, right)
总是有一个元素被包括
Time complexity = $O(n)$