![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
链表算法题
文章平均质量分 56
链表算法题
一碗机智的糖浆
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 62. 圆圈中最后剩下的数字(java实现)--3种解法(暴力,链表,数学)LeetCode--约瑟夫环问题
文章目录题目:延伸:解法1:暴力解法2:链表解法3:数学题目:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2限制:1 <原创 2022-03-02 23:14:39 · 492 阅读 · 0 评论 -
19. 删除链表的倒数第 N 个结点(java实现)--6种解法(暴力,双指针,hash,集合,反转链表,递归)LeetCode
文章目录题目:解法1:暴力解法2:双指针解法3:hash解法4:集合解法5:反转链表解法6:递归题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Nod原创 2022-02-16 12:03:11 · 651 阅读 · 0 评论 -
25. K 个一组翻转链表(java实现)--2种解法(迭代,递归)LeetCode
文章目录题目:解法1:迭代解法2:递归题目:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]示例 2:输入:head = [1,2,3,4原创 2022-02-15 22:56:50 · 319 阅读 · 0 评论 -
24:两两交换链表中的节点(java实现)--2种解法(设置前驱节点,递归)LeetCode
文章目录题目:解法1:设置前驱节点解法2:递归题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100解法1:设置前驱节点原创 2022-02-14 11:02:43 · 815 阅读 · 0 评论 -
21. 合并两个有序链表(java实现)--2种解法(迭代,递归)LeetCode
文章目录题目:解法1:迭代解法2:递归题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和原创 2022-02-14 09:00:23 · 439 阅读 · 0 评论 -
876. 链表的中间结点(java实现)--1种解法(快慢指针)LeetCode
文章目录题目:解法1:快慢指针题目:给定一个头结点为 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原创 2022-02-13 12:10:08 · 110 阅读 · 0 评论 -
234. 回文链表(java实现)--3种解法(双指针,反转链表后半段,边找中间节点边反转)LeetCode
文章目录题目:解法1:双指针解法2:反转链表后半段01:递归02:不设置前驱节点03:设置前驱节点解法3:边找中间节点边反转题目:解法1:双指针 /** * 思路: * 遍历链表值存入集合 * 双指针判断回文数 */ public static boolean isPalindrome(ListNode head) { ArrayList<Integer> list = new ArrayList<>();原创 2022-02-12 11:22:20 · 695 阅读 · 0 评论 -
142. 环形链表 II(java实现)--2种解法(双指针,hash)LeetCode
文章目录题目:解法1:双指针解法2:hash题目:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。示例 1:输入:head = [3原创 2022-02-12 09:38:55 · 120 阅读 · 0 评论 -
141. 环形链表(java实现)--2种解法(双指针,hahs)LeetCode
文章目录题目:解法1:双指针解法2:hash题目:给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输原创 2022-02-12 09:01:53 · 108 阅读 · 0 评论 -
206. 反转链表(java实现)--3种解法(设置前驱节点,不设前驱,递归)LeetCode
文章目录题目:解法1:设置前驱节点解法2:不设置前驱节点解法3:递归题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000解法1:设置前驱节点 /**原创 2022-02-10 17:50:32 · 801 阅读 · 0 评论