week21
201 - 数字范围按位与

代码就是找到那个分界线 把后面的都置0 即可(先左移再右移)
202 - 快乐数
感觉是简单模拟.jpg
其实也是链表判断有无环的问题,但本题最后结果为1 仅有1自环的可能,如果遇到重复元素且不是1的话 一定是无限循环的;
哈希版
快慢指针版
203 - 移除链表元素
注意的点就在 会有连续删除的情况 所以删完一个元素不能直接指next
204 - 计数质数
线性筛马上拿出来背一遍, 数论确实很难见到 原谅自己忘了hh
质数定理: 在x -> +inf 时候, 0 ~ x 质数的个数 ~ x/ln(x)
提到算质数肯定就是线性筛了,线性筛保证每个数字只会被筛一次 所以时间复杂度是o(n)的;
线性筛保证每个合数都只被他的最小质因子筛掉一次 -> 是往后筛
(这里是包括n的)
所以 在i % primes[j] != 0 的情况下 primes[j] 一定是最小质因子; 跳出条件就是i % primes[j] == 0;
记住就好了;
205 - 同构字符串
模拟题:
有这两个条件:
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。 不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
第一个条件用一个哈希表来存储s->t映射关系,第二个条件用一个set来存是否t的字符是否有被映射过
206 - 反转链表
感觉做过.jpg

迭代
递归
207 - 课程表
Leetcode的图论题真的很少.. 看到了图论题就来复习一下8
回过来,这里显然就是拓扑排序了
208 - 实现Trie(前缀树)
Trie树 这个数据结构也比较简单 就是按照单词的顺序把每个字母建一条边; 常用于存储大量单词这样的情况; 如果前缀相同则共享边, 以此节省存储空间
树的每个节点属性: 26个儿子 + 是否为单词结尾的bool标记
search 和 startWith 的区别就在于最后是否要判断单次结尾标记
209 - 长度最小的子数组
提到滑动窗口 很快啊 我就把这个题翻出来看一遍, 滑动窗口分两种固定窗口大小的和不固定的 不固定的就不太好写看看这个复习一下
Leetcode 76. 最小覆盖子串
所以这题的整体逻辑是一样的, 由于列表只会遍历一次所以是o(n)的;
210 - 课程表II
拓扑排序的出栈顺序就是拓扑排序的结果,保存出栈顺序当然是数组模拟链表啦hh;
Last updated