LeetCode刷题笔记-滑动窗口

解题思路
思路
滑动窗口问题主要可以解决子数组的问题,比如寻找某刻条件的最长或最短的子数组。
维护一个窗口,不断滑动,考虑好扩充窗口和缩小窗口的条件,一般向右边界用于扩充,左边界用于缩小。
这样时间复杂度是O(N),因为可以通过一次遍历所有窗口的数据
1 | left = 0 |
03-字符串-无重复字符的最长子串
题目描述
给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。
示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
1 | # |
76-字符串-最小覆盖子串
题目描述
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。
注意:
对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
如果 s 中存在这样的子串,我们保证它是唯一的答案。
示例 1:
输入:s = “ADOBECODEBANC”, t = “ABC”
输出:”BANC”
解释:最小覆盖子串 “BANC” 包含来自字符串 t 的 ‘A’、’B’ 和 ‘C’。
1 | # |
209-数组-长度最小的子数组
题目描述
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。
1 | # |
- Title: LeetCode刷题笔记-滑动窗口
- Author: LightedCode
- Created at : 2024-09-02 11:48:33
- Updated at : 2024-10-14 09:58:52
- Link: https://lightedcode.github.io/2024/09/02/LeetCode刷题笔记-滑动窗口/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments