Linkedin List
文章平均质量分 70
WaterlooAss
这个作者很懒,什么都没留下…
展开
-
Linked List Random Node
Linked List Random NodeQuestion:思路:这道题乍一看, 挺简单的. 没什么难度, 确实,但这题主要是一个解法非常smart.so: generally 3种解法.前两种不必多说了, 说一下这个第三种解法: reservoir sampling.这是一个很牛逼的算法。 讲的是如何从infintine number 的data中 随机抽取一个数.就前提条件是这个 array of number的长度我们是未知的。就是说不知道有多少个数字, 所以在这种情况下. 如果原创 2022-05-27 11:50:06 · 94 阅读 · 0 评论 -
Flatten Binary Tree to Linked List
Flatten Binary Tree to Linked ListQuestion:思路:这个题考的不是让我们创造一个新的LinkList, 所以不能按照做prev traversal tree的思路做recursion 来创建linklist.这道题是把given 的tree 结构转变成linklist所以呢,这个题考查的是prev traversal tree 和 link list的关系。看 example1, 我们会发现, 根据pre-traversal tree 的原理, 左边最大原创 2022-05-24 09:50:25 · 67 阅读 · 0 评论 -
Intersection of Two Linked Lists
Intersection of Two Linked ListsQuestion:思路:这个解题思路, 也是非常的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 · 118 阅读 · 0 评论 -
Linked List Cycle II
Linked List Cycle IIQuestion:思路:这道题的一个解法真的很聪明!首先非常常规的做法, 存每一个node 的地址去set里, 然后当有重复的自然就是cycle 的 start.但是这样写, 虽然只走了一遍, 但是经过测试, 速度还是很慢.所以此时第二个思路就非常聪明. 利用数学的思维首先,这个思路起头还是传统的double pointer 解法,fast 和 slow.然后当fast 遇上 slow的时候, 我们此时可以写一个数学公式define x = the原创 2022-05-23 10:53:29 · 143 阅读 · 0 评论 -
Reverse Nodes in k-Group
Reverse Nodes in k-GroupQuestion:思路:又是一道很好的题, reverse link list的 hard 变形. 做完这个题感觉reverse link list的题型就能参透了这道题呢要求根据给定的k值,来决定每隔几个node来一次reverse.我一开始尝试运用一堆pointers, 做一个大while loop. 但是浪费很了很多时间, 最后也没能做出来. 原因之一是, 我没法在下一回合while loop 的时候仍然保存上一轮的head.所以后来我放弃原创 2022-05-23 04:03:01 · 101 阅读 · 0 评论 -
LRU Cache
LRU CacheQuestion:思路:这道题呢, 其实难点就在这个他要求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 评论