滑动窗口
MD_
不拼一下 你怎么知道你不会成功!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
滑动窗口系列-Leetcode 992. K 个不同整数的子数组
文章目录问题描述解题报告实现代码参考资料问题描述给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。(例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)返回 A 中好子数组的数目。示例 1:输入:A = [1,2,1,2,3], K = 2输出:7解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2原创 2020-06-18 12:08:59 · 375 阅读 · 0 评论 -
滑动窗口系列-Leetcode 219. 存在重复元素 II
文章目录问题描述解题报告实现代码参考资料问题描述给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true解题报告维持一个大小为k的窗口,将窗口内的数放到集合中,一直检查窗口内是否相同元素,如果存在就返回 true,否则返回 false。移动右指针,检查窗口内的元素放到集合中,检查是否存在重复元素;原创 2020-05-18 21:35:21 · 243 阅读 · 0 评论 -
滑动窗口系列-Leetcode 713. 乘积小于 K 的子数组
文章目录问题描述解题报告实现代码参考资料问题描述给定一个正整数数组 nums。找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于100的子数组分别为: [10], [5],[2], [6], [10,5], [5,2], [2,6], [5,2,6]。 需要注意的是 [10,5,2]并不是乘积小于100的子数组。说明:0 < nums.length <= 500000原创 2020-05-18 14:24:02 · 188 阅读 · 0 评论 -
滑动窗口系列-Leetcode 904. 水果成蓝【非 常见的 的滑动窗口】
文章目录问题描述解题报告实现代码参考文献问题描述在一排树中,第 i 棵树产生 tree[i] 型的水果。你可以从你选择的任何树开始,然后重复执行以下步骤:把这棵树上的水果放进你的篮子里。如果你做不到,就停下来。移动到当前树右侧的下一棵树。如果右边没有树,就停下来。请注意,在选择一颗树后,你没有任何选择:你必须执行步骤 1,然后执行步骤 2,然后返回步骤 1,然后执行步骤 2,依此类推,直至停止。你有两个篮子,每个篮子可以携带任何数量的水果,但你希望每个篮子只携带一种类型的水果。用这个程序原创 2020-05-17 21:24:35 · 438 阅读 · 0 评论 -
Leetcode 1248. 统计「优美子数组」【记录奇数位置&滑动窗口&前缀和】
文章目录问题描述解题报告记录奇数位置滑动窗口前缀和实现代码记录奇数位置实现滑动窗口实现前缀和+哈希表优化实现参考资料本文在别人的题解【链接列于参考资料中】基础上加上些许自己的理解,若侵权必删。问题描述给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1]原创 2020-05-15 15:22:10 · 458 阅读 · 0 评论 -
滑动窗口系列-Leetcode 438. 找到字符串中所有字母异位词
文章目录问题描述解题报告实现代码参考资料问题描述给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1:输入:s: “cbaebabacd” p: “abc”输出:[0, 6]解释:起始索引等于 0 的子串是 “cba”, 它是 “abc” 的字母异位词。起始索引等于 6原创 2020-05-08 21:49:18 · 165 阅读 · 0 评论 -
滑动窗口系列-Leetcode 567. 字符串的排列
文章目录问题描述解题报告实现代码参考资料问题描述给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).解题报告本题代码框架与滑动窗口系列-Leetcode 76. 最小覆盖子串非常相似,不解释。实现代码class Solution {public: // 判断 s原创 2020-05-08 21:31:06 · 247 阅读 · 0 评论 -
滑动窗口系列-Leetcode 76. 最小覆盖子串
文章目录问题描述解题报告实现代码参考资料问题描述给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”解题报告使用两个map来记录被匹配的字符串和窗口内的子串的样式,分别为need和window移动右边界时,更新window以及valid;当窗口内的子串与被匹配的串相符时,移动左边界,直到窗口内的子串与被匹配的串不符;移动左边界时,更新window以及va原创 2020-05-08 21:13:03 · 309 阅读 · 0 评论 -
滑动窗口系列-Leetcode 1423. 可获得的最大点数
文章目录问题描述解题报告实现代码参考资料问题描述给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”解题报告实现代码class Solution {public: string minWindow(string s, string t) { unordered_map<char, int> need, window; fo原创 2020-05-08 20:59:46 · 442 阅读 · 0 评论 -
滑动窗口系列-Leetcode 424. 替换后的最长重复字符
文章目录问题描述解题报告滑动窗口其他解法实现代码滑动窗口参考资料问题描述几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。输入:cardPoints = [1,2,3,4,5,6,1], k = 3输出:12解释:第一次行动,不管拿哪张牌,你的点数总是原创 2020-05-08 19:03:45 · 215 阅读 · 0 评论 -
滑动窗口系列-Leetcode 1208. 尽可能使字符串相等
文章目录问题描述解题报告实现代码参考资料问题描述给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。如果 s 中没有子字符串可以转化成 t原创 2020-05-08 18:42:43 · 213 阅读 · 0 评论 -
滑动窗口系列-Leetcode 3.无重复字符的最长子串
文章目录问题描述解题报告滑动窗口其他解法动态规划纯数据结构实现代码滑动窗口实现其他解法实现动态规划纯数据结构参考资料问题描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解题报告滑动窗口这道题方法有好几种,这里只讨论 滑动窗口方法。移动窗口的右边界时,更新窗口内每个字符出现的次数【使用 桶 来装每个字符出现次数】。当窗口内某个字符出现超过一次时,说明出现了重复字符,原创 2020-05-08 18:36:37 · 443 阅读 · 0 评论
分享