随笔分类 -  链表

摘要:解法1:利用集合 思路:利用集合判断节点是否重复出现,第一个重复出现的节点就是入口节点 代码: public class A2 { static class ListNode{ ListNode next; int val; } public static ListNode circleEntran 阅读全文
posted @ 2021-09-25 18:10 for_ward 阅读(34) 评论(0) 推荐(0)
摘要:题目:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性 解法:双指针 代码: /** Definition for singly-linked list. public class ListNode { int v 阅读全文
posted @ 2020-11-13 11:07 for_ward 阅读(72) 评论(0) 推荐(0)
摘要:题目:输入两个链表,找出它们的第一个公共节点。 解法一:利用HashSet,比较捞 解法二:双指针 思路:两个链表长度分别为m+C、n+C, C为公共部分的长度,第一个人走完一轮后,回到第二个人起点走n步;第2个人走了n+C步后,回到第一个人起点走m步。 此时它们因走的步数相同而相遇。 代码: /* 阅读全文
posted @ 2020-11-08 21:11 for_ward 阅读(66) 评论(0) 推荐(0)
摘要:题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 解法一:借助栈 思路:栈的特点是先进后出,java有stack类 代码: /** Definition for singly-linked list. public class ListNode { int val; Lis 阅读全文
posted @ 2020-11-08 20:02 for_ward 阅读(73) 评论(0) 推荐(0)
摘要:题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 解法一:双指针(简单) 思路:直接让后一个指向前一个 解法二:递归 思路:将链表看作已经反转和还未反转两个部分 代码: /** Definition for singly-linked list. public clas 阅读全文
posted @ 2020-11-08 12:04 for_ward 阅读(46) 评论(0) 推荐(0)