Date: 5/30/2025Category: Tag: 算法八股文, 滑动窗口
题目链接:https://leetcode.cn/problems/shortest-supersequence-lcci/
解题思路
这个题目属于一类很典型的问题:给定一个数组,要找到满足某个性质的最短子数组。这类问题往往可以用滑动窗口的方式来解决。
下面是滑动窗口的模板代码:
arr = get_input_arr()
status = init_status()
left = 0
right = 0
min_len = float('inf')
ans = []
while True:
if right < len(arr) and not is_condition_met(status):
right += 1
status.update(left, right)
else:
if left == len(arr):
break
# 如果有多个相同长度的最短子数组,会保留左侧索引最小的
if is_condition_met(status) and right - left < min_len:
min_len = right - left
ans = [left, right - 1]
left += 1
status.update(left, right)
return ans
