基础算法(八) -- 滑动窗口

作者: 古城算法分类: 校园学习 发布时间: 2021-01-16 14:36:19 浏览:7903 次

基础算法(八) -- 滑动窗口

香菇喵喵:
支持一下虾图的古城,我觉着中英夹杂完全没问题,有人中文刷也有人英文刷嘛,都是基础表达也没用什么高深词汇,支持古城!

TDolphin:
建议字体大一些 不要小气 小字真不好看清

【回复】哈哈 赞 主要是手机屏幕有限
【回复】好的好的,收到建议,以后尽量大一点字。看的时候可以全屏试试。
DIDIDUDIDI:
这个月LC的题型貌似转成滑动窗口了,速来找Up主求救[doge]

【回复】回复 @古城算法 :是的哈哈,上个月就是dsu,这月看势应该是滑窗了
【回复】回复 @DIDIDUDIDI :哈哈,谢谢。我习惯这样写了,窗口指的是就是在窗口中的元素。 up用的map的含义是当前所出现的字符和对应的个数,即“窗口”中该字符种类出现了多少种,每种有多少个。
【回复】哈哈,怎么还分月的啊。是每日一题嘛
Connor学长:
992 高斯这块实在没懂,希望能再给说说。

abscisse:
424我自己做的时候用的是先统计有几个不同字符 然后for loop这个字符 相当于fix可能的解字符 然后里面循环用一个count[笑哭] 应该就是视频里面那个同学说的 这个解法不够快 确实不是最优解 主要还是没想明白窗口可以maintain的变化条件

abscisse:
最后2道题还是有点费劲 我看了题解开始也不理解 后面才想明白 这个我觉得可以理解成固定i 即每次循环i的时候等于固定右边界 然后算左边界最远的能满足left到i这个subarray满足条件的区间

bili_55259398458:
提个小建议说话不要中文参杂着英文听的好费劲

【回复】感谢建议,平时英语习惯了。以后尽量多加中文的解释
青红他就要造白:
谢谢up,听完很有收获[打call][打call][打call]

学生十一:
感谢up的建议!狠狠刷two_sum和滑动窗口一揽子题!

Seattle_Cook_001:
补充一下:为什么第424题可以用maxCount 假设eddie说的AAAB,此时永远不可能出A,出A的情况只可能是后面有其他字母有更高的frequency,例如AAABCCCC。 所以可以用maxCount ------ 但我本人十分赞同eddie的做法,因为这种maxCount面试的时候很难讲清楚,非常不straightforward(尤其是在英文面试中) 相似的还有在滑动窗口里面用if 【可以看eddie的第1438题的答案】而不是while,反正用if的话,我面试的时候讲不清楚hhh

祁伟的小日常:
对于第395. 至少有 K 个重复字符的最长子串 ,我可以理解成把全局最优解分解成26个局部最优解,取这26个其中的最优?

【回复】很难想得到 主要还是要想到固定了出现重复字符的数量 移动左右指针的时间才能具备单调性 即右指针i只可能大于等于限制的数量 左指针left只可能小于等于限制的数量
【回复】bingo!我完全同意你的思路
让我换一个名字吧:
992题的18行那个res+=i-left+1还是有点没看懂,他不是要求good的个数吗,为啥要加上长度呢。。那个高斯算法的有点没看懂,能麻烦up主再讲细一些吗[大哭][大哭][大哭][大哭]

readhard:
向up主请教一个问题:力扣第3题目,while(!set.add(c)) set.remove(s.charAt(left++)); 这里使用while的语义是什么? 谢谢。

【回复】回复 @古城算法 :谢谢up,调试了一下,弄懂了。谢谢
【回复】public int lengthOfLongestSubstring(String s) { Set<Character> set = new HashSet<>(); int left = 0, res = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); while (set.contains(c)) set.remove(s.charAt(left++)); set.add(c); res = Math.max(res, i - left + 1); } return res; }
【回复】比如pww在第二个w的时候,需要从set里面持续退出p和w,所以用while
奥利奥爱吃鱼223:
up主讲的真好,有些题我反复听了真的觉得解法很巧妙。如果能有lintcode 题号就更好了,(不少人如同我用Lintcode 刷题呜呜呜,按leetcode题目搜不到部分题[保佑]

【回复】哈哈,谢谢建议。。我个人用的是leetcode,lint貌似是九章?leetcode也有国服貌似,不过不知道题号是否对应。感觉leetcode很多是之前的面试题还挺接近的。
【回复】回复 @奥利奥爱吃鱼223 :是的,一些知识点的时候我也是从lintcode抽的题目,确实更细分类。
【回复】回复 @古城算法 :Lintcode上题号和题目与Leetcode不完全对应,但大部分可以找得到(需要花时间搜索),甚至还会有些题Lintcode有的 leetcode没有或者Leetcode有的,lintcode有。

知识分享官 学习 课程 JAVA 经验分享 Java 学习心得

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!