
链表
lyd1995
这个作者很懒,什么都没留下…
展开
-
leetcode链表相关解题技巧
之前刷leetcode,很多链表的题目刷起来很慢,很费劲,说到底,对链表这个数据结构有种不信任感,因为每次经过一个节点之后就没有办法返回了(单项链表),平时用习惯了数组,对这种变化有点不适应。这里说一说我在刷题过程中解决链表相关问题所用的技巧,以及如何更好的使用链表一、dummyHeadleetcode里面传进来的head是带有数据的,这个没有任何节点指向head,因此对head的修改有时会...原创 2019-08-23 08:11:14 · 333 阅读 · 0 评论 -
LeetCode142-环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:...原创 2019-04-17 21:47:05 · 131 阅读 · 0 评论 -
LeetCode328-奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2-&g...原创 2019-04-17 22:10:18 · 129 阅读 · 0 评论 -
LeetCode92-反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL一、思路使用双指针加向量的方法,向量存放链表的值,指针一快一慢,两者相差n-m,等到快的那个到达第n个...原创 2019-04-26 22:37:20 · 128 阅读 · 0 评论 -
LeetCode114-二叉树展开为链表
给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6一、思路为了将一颗二叉树展开,需要:展开该二叉树的左子树展开该二叉树的右子树将展开...原创 2019-06-12 16:42:49 · 110 阅读 · 0 评论 -
LeetCode138-复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 1,它的下一个指针和随机指针...原创 2019-06-30 18:24:41 · 165 阅读 · 0 评论 -
LeetCode143-重排链表
给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1...原创 2019-06-30 19:57:09 · 224 阅读 · 0 评论 -
LeetCode147-对链表进行插入排序
对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所...原创 2019-06-30 20:11:53 · 223 阅读 · 0 评论