基础算法(八) -- 滑动窗口
香菇喵喵:
支持一下虾图的古城,我觉着中英夹杂完全没问题,有人中文刷也有人英文刷嘛,都是基础表达也没用什么高深词汇,支持古城!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有。