Linkedin List
文章平均质量分 70
WaterlooAss
这个作者很懒,什么都没留下…
展开
-
Linked List Random Node
Linked List Random Node Question: 思路: 这道题乍一看, 挺简单的. 没什么难度, 确实,但这题主要是一个解法非常smart. so: generally 3种解法. 前两种不必多说了, 说一下这个第三种解法: reservoir sampling. 这是一个很牛逼的算法。 讲的是如何从infintine number 的data中 随机抽取一个数. 就前提条件是这个 array of number的长度我们是未知的。就是说不知道有多少个数字, 所以在这种情况下. 如果原创 2022-05-27 11:50:06 · 97 阅读 · 0 评论 -
Flatten Binary Tree to Linked List
Flatten Binary Tree to Linked List Question: 思路: 这个题考的不是让我们创造一个新的LinkList, 所以不能按照做prev traversal tree的思路做recursion 来创建linklist. 这道题是把given 的tree 结构转变成linklist 所以呢,这个题考查的是prev traversal tree 和 link list的关系。 看 example1, 我们会发现, 根据pre-traversal tree 的原理, 左边最大原创 2022-05-24 09:50:25 · 68 阅读 · 0 评论 -
Intersection of Two Linked Lists
Intersection of Two Linked Lists Question: 思路: 这个解题思路, 也是非常的smart, smart. double pointer的解题思路, 这个题也是运用了一个数学公式: x + y = y + x; 什么意思呢 就是我们想象两个pointer都要把两个linklist走一遍 那么pointer 1 先走了 link list x, pointer2 先走了y 当pointer1 走完x 之后立刻走y, 反之pointer2 走完y 之后再立刻走x. 那么原创 2022-05-24 06:22:24 · 120 阅读 · 0 评论 -
Linked List Cycle II
Linked List Cycle II Question: 思路: 这道题的一个解法真的很聪明! 首先非常常规的做法, 存每一个node 的地址去set里, 然后当有重复的自然就是cycle 的 start. 但是这样写, 虽然只走了一遍, 但是经过测试, 速度还是很慢. 所以此时第二个思路就非常聪明. 利用数学的思维 首先,这个思路起头还是传统的double pointer 解法,fast 和 slow. 然后当fast 遇上 slow的时候, 我们此时可以写一个数学公式 define x = the原创 2022-05-23 10:53:29 · 145 阅读 · 0 评论 -
Reverse Nodes in k-Group
Reverse Nodes in k-Group Question: 思路: 又是一道很好的题, reverse link list的 hard 变形. 做完这个题感觉reverse link list的题型就能参透了 这道题呢要求根据给定的k值,来决定每隔几个node来一次reverse. 我一开始尝试运用一堆pointers, 做一个大while loop. 但是浪费很了很多时间, 最后也没能做出来. 原因之一是, 我没法在下一回合while loop 的时候仍然保存上一轮的head. 所以后来我放弃原创 2022-05-23 04:03:01 · 104 阅读 · 0 评论 -
LRU Cache
LRU Cache Question: 思路: 这道题呢, 其实难点就在这个他要求put 和 get 都是O(1), 因为其实如果没有效率的要求, 那这个题就随随便便套用一个unordered_map, 然后胡乱更新就完了. 但他要求了要O(1), 所以说就是我们还要想一个方法,实时track 这个least recently used key. 一个比较直观的方法就是, 我们设置一个container, 然后每次运用到一个key,就把这个key 推到container的最前方, 每次当put需要evic原创 2022-05-19 13:17:54 · 45 阅读 · 0 评论