链表
春风又。
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 52. 两个链表的第一个公共节点
输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:示例 2:示例 3:方法2:方法3来源:力扣(LeetCode)链接:https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2022-07-04 23:26:08 · 68 阅读 · 0 评论 -
剑指 Offer 18. 删除链表的节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:示例 2:代码2来源:力扣(LeetCode)链接:https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2022-06-30 22:23:59 · 93 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制(Java)
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:示例 2:示例 3:示例 4:利用哈希表实现(可以在b站搜一些大佬的视频讲解,更加直观)来源:力扣(LeetCode)链接:https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请原创 2022-06-12 20:02:44 · 290 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表(Java)
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:先算出链表的长度,再定义一个该长度的数组,从数组的最后一个元素开始存放head从首节点开始的值。原创 2022-06-12 17:49:35 · 236 阅读 · 0 评论 -
LeetCode_203移除链表元素
移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]易出问题代码如下:public class Solution { .原创 2022-05-06 13:26:33 · 313 阅读 · 0 评论 -
LeetCode_206反转链表
反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]完整代码如下:class Solution { public ListNode reverseList(ListNode head) { if(head == null){ re.原创 2022-05-06 18:28:50 · 473 阅读 · 0 评论 -
LeetCode876. 链表的中间结点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NU原创 2022-05-06 19:20:54 · 72 阅读 · 0 评论 -
牛客_JZ22 链表中倒数最后k个结点
题目:输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。代码如下:public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @param k int整型 * @return ListNode类 *原创 2022-05-07 07:27:39 · 77 阅读 · 0 评论 -
LeetCode21. 合并两个有序链表
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]代码如下:class Solution { public ListNode mergeTwoLists(ListNode list1, ListNo原创 2022-05-07 09:55:25 · 347 阅读 · 0 评论 -
牛客CM11 链表分割
描述现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。题目解析:思路:代码如下:public class Partition { public ListNode partition(ListNode pHead, int x) { // write code here if(pHead == null){ ret原创 2022-05-07 14:53:20 · 202 阅读 · 0 评论 -
牛客OR36 链表的回文结构
描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true思想:1.先将链表A拷贝到另一个新建链表B中2.再将链表B反转(http://t.csdn.cn/X3y26)3.将反转后的链表B和链表A进行比较,并返回代码如下:public class PalindromeList {原创 2022-05-07 18:58:50 · 455 阅读 · 0 评论 -
牛客JZ76 删除链表中重复的结点
描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5数据范围:链表长度满足 0 \le n \le 1000 \0≤n≤1000 ,链表中的值满足 1 \le val \le 1000 \1≤val≤1000示例1输入:{1,2,3,3,4,4,5}返回值:{1,2,5}示例2输入:{1,1,1,8}返回值:原创 2022-05-07 19:04:39 · 327 阅读 · 0 评论 -
LeetCode141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个原创 2022-05-08 14:15:31 · 159 阅读 · 0 评论 -
LeetCode142. 环形链表 II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为原创 2022-05-10 11:14:10 · 73 阅读 · 0 评论