leetcode
Kevin_NZF
这个作者很懒,什么都没留下…
展开
-
复制带随机指针的链表
在上图中,对于一个节点,它的 next 指针指向链表中的下一个节点。 next 指针是通常有向链表中有的部分且将所有节点 链接 起来。图中有趣的一点,也是这题有趣的一点在于 random 指针,正如名字所示,它可以指向链表中的任一节点也可以为空。算法1、从 头 指针开始遍历整个图。我们将链表看做一张图。下图对应的是上面的有向链表的例子,Head 是图的出发节点。2、当我们遍历到某个点时,如果我们已经有了当前节点的一个拷贝,我们不需要重复进行拷贝。3、如果我们还没拷贝过当前节点,我们创造一个新的.原创 2020-07-15 10:50:07 · 184 阅读 · 0 评论 -
LeetCode 刷题记录:删除链表的倒数第 N 个节点
题目解析采取双重遍历肯定是可以解决问题的,但题目要求我们一次遍历解决问题,那我们的思路得发散一下。我们可以设想假设设定了双指针 p 和 q 的话,当 q 指向末尾的 NULL,p 与 q 之间相隔的元素个数为 n 时,那么删除掉 p 的下一个指针就完成了要求。设置虚拟节点 dummyHead 指向 head设定双指针 p 和 q,初始都指向虚拟节点 dummyHead移动 q,直到 p 与 q 之间相隔的元素个数为 n同时移动 p 与 q,直到 q 指向的为 NULL将 p 的下一个节点指向下原创 2020-07-10 10:22:57 · 126 阅读 · 0 评论 -
LeetCode刷题记录--前K个高频元素
前K个高频元素解法一:粗暴排序法复杂度分析解法二:最小堆ps:要求算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。解法一:粗暴排序法最简单粗暴的思路就是 使用排序算法对元素按照频率由高到低进行排序,然后再取前 kk 个元素。以下十种排序算法,任你挑选!可以发现,使用常规的诸如 冒泡、选择、甚至快速排序都是不满足题目要求,它们的时间复杂度都是大于或者等于 O(n logn)O(nlogn),而题目要求算法的时间复杂度必须优于 O(n log n)O(nlogn)。复杂度原创 2020-07-07 10:53:00 · 280 阅读 · 0 评论