
链表
文章平均质量分 69
链表
Sophia_fez
干啥啥不行,可爱第一名.jpg
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode *148. 排序链表(归并排序)(2020.11.21)
【题目】*148. 排序链表给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 * 10^4] 内-10^5 <=原创 2020-11-21 11:27:43 · 200 阅读 · 0 评论 -
leetcode *328. 奇偶链表(2020.11.13)
【题目】*328. 奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->原创 2020-11-13 09:18:54 · 160 阅读 · 0 评论 -
leetcode *143. 重排链表(2020.10.20)
【题目】*143. 重排链表给定一个单链表 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->5->2->4->3.【解题思路1】双端队列cl原创 2020-10-20 10:40:03 · 182 阅读 · 0 评论 -
leetcode *19. 删除链表的倒数第N个节点(2020.10.18)
【题目】*19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?【解题思路1】快慢指针class Solution { public ListNode removeNthFromEnd(ListNode原创 2020-10-18 12:30:54 · 214 阅读 · 0 评论 -
leetcode *142. 环形链表 II(2020.10.10)
【题目】*142. 环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head原创 2020-10-10 10:58:11 · 168 阅读 · 0 评论 -
leetcode *2. 两数相加(模拟十进制加法,模板)(2020.10.4)
【题目】*2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807【解题思路1】模拟十进制加法class原创 2020-10-04 09:22:22 · 315 阅读 · 0 评论 -
leetcode *剑指 Offer 35. 复杂链表的复制 & *138. 复制带随机指针的链表(2021.7.22)
【题目】*剑指 Offer 35. 复杂链表的复制请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1原创 2020-09-23 00:05:31 · 260 阅读 · 0 评论 -
leetcode 141. 环形链表(2020.10.9)
【题目】给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:...原创 2020-03-25 16:52:00 · 197 阅读 · 0 评论 -
leetcode 剑指 Offer 25. 合并两个排序的链表 & 21. 合并两个有序链表(2020.5.1)
【题目】将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 :输入:1->2->4, 1->3->4输出:1->1->2->3->4->4【解题思路1】新建一个头结点,比较l1和l2的结点值将小的插入到新链表中,并后移,循环直到l1或者l2为空;若循环结束后一个为空另一个不为空,不为空...原创 2020-02-19 21:12:45 · 253 阅读 · 0 评论 -
leetcode 剑指 Offer 06. 从尾到头打印链表
【题目】面试题06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000【解题思路1】栈/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int原创 2020-06-10 12:43:04 · 193 阅读 · 0 评论 -
leetcode 剑指 Offer 52. 两个链表的第一个公共节点 & 160. 相交链表 & 面试题 02.07. 链表相交(双指针)
【题目】编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 ...原创 2020-03-25 17:16:41 · 264 阅读 · 0 评论 -
leetcode 234. 回文链表(2020.10.23) & 面试题 02.06. 回文链表(快慢指针)
【题目】234. 回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?【解题思路1】快慢指针+翻转使用快慢指针找到中间的位置,如果是奇数个元素,中间元素归前半部分,对后半部分翻转,并且最后将链表恢...原创 2020-04-02 17:25:34 · 286 阅读 · 0 评论 -
leetcode 剑指 Offer 22. 链表中倒数第k个节点 & 面试题 02.02. 返回倒数第 k 个节点(快慢指针)
【题目】面试题 02.02. 返回倒数第 k 个节点实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。【解题思路1】快慢指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne原创 2020-05-29 11:03:00 · 282 阅读 · 0 评论 -
leetcode 面试题 02.01. 移除重复节点(2020.6.26)
【题目】面试题 02.01. 移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?【解题思路1】Set + 双指针/** * Definition for singly-linked lis原创 2020-05-29 10:53:53 · 291 阅读 · 0 评论 -
leetcode 1290. 二进制链表转整数
【题目】1290. 二进制链表转整数给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出:1示例 4:输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]原创 2020-05-20 13:56:44 · 260 阅读 · 0 评论 -
leetcode *24. 两两交换链表中的节点(2020.10.13) & **25. K 个一组翻转链表(2020.5.16)
【题目】**25. K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不原创 2020-05-16 14:47:01 · 207 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素
【题目】给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3【解题思路1】简单的有序链表操作/** * Definition for singly-linked list. * public c...原创 2020-03-13 23:24:32 · 151 阅读 · 0 评论 -
leetcode **23. 合并K个升序链表(2020.4.26)
【题目】**23. 合并K个排序链表21.合并两个有序链表**23. 合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6【解题思路1】暴力法转化...原创 2020-04-26 15:48:11 · 271 阅读 · 0 评论 -
leetcode *445. 两数相加 II(模拟十进制加法)(2020.4.14)
【题目】445. 两数相加 II66. 加一67. 二进制求和415. 字符串相加989. 数组形式的整数加法445. 两数相加 II给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的...原创 2020-04-14 15:11:57 · 361 阅读 · 0 评论 -
leetcode 剑指 Offer 18. 删除链表的节点 & 237. 删除链表中的节点 & 面试题 02.03. 删除中间节点
【题目】237. 删除链表中的节点203. 移除链表元素【解题思路1】后继结点的值覆盖掉要删除元素的值,最后再将重复元素断链/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { va...原创 2020-04-02 16:54:47 · 269 阅读 · 1 评论 -
leetcode *147. 对链表进行插入排序(2020.11.20)
【题目】对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。...原创 2020-03-31 16:16:17 · 341 阅读 · 0 评论 -
leetcode 剑指 Offer 24. 反转链表 & 206. 反转链表(2020.3.2)
【题目】反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?【解题思路1】遍历结点修改指针/** * Definition for singly-linked list. * public cl...原创 2020-03-28 21:55:56 · 225 阅读 · 0 评论