shi0rik0 的博客shi0rik0 的博客
主页
所有文章
按类别浏览
按标签浏览
Ubuntu 实用脚本
Next.js 配置脚本
主页
所有文章
按类别浏览
按标签浏览
Ubuntu 实用脚本
Next.js 配置脚本
ACGN 1pinia 1electron 2理财 1神经网络 1transformer 1npm 1WSL 1算法八股文 7滑动窗口 1前缀和 1前缀树 1树状数组 1SSE 1Linux 1VS Code 1VuePress 1Spring 2
LeetCode题解:最短超串

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