链表
链表练习
另一花生
竹杖芒鞋轻胜马,一蓑烟雨任平生
展开
-
142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:原创 2022-01-17 21:30:00 · 240 阅读 · 0 评论 -
面试题 02.07. 链表相交
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at '8'解释:相.原创 2022-01-17 10:27:06 · 198 阅读 · 0 评论 -
旋转链表
给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next...原创 2021-05-12 10:05:31 · 190 阅读 · 0 评论 -
237. 删除链表中的节点
请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9/** * Definition for singly-linked list. * pu...原创 2021-11-05 00:04:04 · 404 阅读 · 0 评论 -
CC130 删除链表的倒数第n个节点
算法思想一:双指针由于我们需要找到倒数第 n 个节点,因此可以使用两个指针fast 和 slow 同时对链表进行遍历,并且 fast 比 slow 超前 n 个节点。当 fast 遍历到链表的末尾时,slow 就恰好处于倒数第 n 个节点。具体地,初始时 fast 和 slow 均指向头节点。首先使用 fast 对链表进行遍历,遍历的次数为 n。此时,fast 和 slow 之间间隔了 n-1 个节点,即 fast 比 slow 超前了 n 个节点。在这之后,同时使用 fast 和 slow 对链表原创 2021-11-05 02:24:15 · 482 阅读 · 0 评论 -
NC3 链表中环的入口结点
描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。输入描述:输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台将这2个会组装成一个有环或者无环单链表返回值描述:返回链表的环的入口结点即可。而我们后台程序会打印这个节点示例1{1,2},{3,4,5}返回值:3说明:返回环形链表入口节点,我们后台会打印该环形链表入口节点,即3示例2{1},{}"null"说明:没有环,返回null,后台打印"null"示例3原创 2021-07-24 14:37:14 · 111 阅读 · 0 评论 -
LC8 重排链表
描述将给定的单链表\ LL:L_0→L_1→…→L_{n-1}→L_ nL0→L1→…→Ln−1→Ln重新排序为:L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…L0→Ln→L1→Ln−1→L2→Ln−2→…要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。示例1输入:{1,2,3,4}返回值:{1,4,2,3}说明:给定head链表1->2->3->4, 重新排列为 1->4->2->..原创 2021-09-21 20:58:52 · 531 阅读 · 0 评论 -
CC57 链表内指定区间反转
描述将一个节点数为 size 链表 m位置到n 位置之间的区间反转,要求时间复杂度O(n)O(n),空间复杂度O(1)O(1)。例如:给出的链表为1\to 2 \to 3 \to 4 \to 5 \to NULL1→2→3→4→5→NULL,m=2,n=4m=2,n=4,返回1\to 4\to 3\to 2\to 5\to NULL1→4→3→2→5→NULL.数据范围:链表长度0 < size \le 10000<size≤1000,0 < m \le n...原创 2021-12-11 22:00:59 · 751 阅读 · 0 评论 -
链表中的节点每k个一组翻转
描述将给出的链表中的节点每\ kk个一组翻转,返回翻转后的链表如果链表中的节点数不是\ kk的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。要求空间复杂度\ O(1)O(1)例如:给定的链表是1\to2\to3\to4\to51→2→3→4→5对于\ k = 2k=2, 你应该返回2\to 1\to 4\to 3\to 52→1→4→3→5对于\ k = 3k=3, 你应该返回3\to2 \to1 \to 4\to 53→2→1→4→...原创 2021-05-30 14:48:57 · 163 阅读 · 0 评论 -
链表中删除重复的元素后打印链表
import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode hea.原创 2021-03-22 22:26:01 · 425 阅读 · 0 评论 -
两个链表的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode FindFirstComm原创 2021-03-28 17:05:09 · 236 阅读 · 0 评论 -
链表中是否有环
判断给定的链表中是否有环。如果有环则返回true,否则返回false。/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } *//** * Definition for singly-li原创 2021-03-25 09:05:01 · 246 阅读 · 0 评论 -
单链表的排序
描述给定一个无序单链表,实现单链表的排序(按升序排序)。示例1输入:[1,3,2,4,5]复制返回值:{1,2,3,4,5}原创 2021-05-30 18:00:53 · 313 阅读 · 0 评论 -
合并有序链表
import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ public ListNode merg.原创 2021-03-28 14:47:54 · 392 阅读 · 0 评论 -
876. 链表的中间结点
给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, L..原创 2021-12-30 14:11:52 · 251 阅读 · 0 评论 -
206. 反转链表
给你单链表的头节点head,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = [1,2]输出:[2,1]输入:head = []输出:[]/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListN...原创 2021-03-22 22:45:04 · 310 阅读 · 0 评论