算法-链表
链表相关算法题的总结归纳
程序员大航子
现就职于抖音集团 | 在南方发展的不正经东北人 | 互联网苟且偷生的JAVA开发 | 面试人数超200人 | 关注我不迷路
展开
-
两个链表的第一个公共结点
两个链表的第一个公共结点题目输入两个链表,找出它们的第一个公共结点。示例示例 1:1, 2, 3, 4, 5, 6, 7, 8, 910,11, 4, 5, 6, 7, 8, 9返回4解题思路两个链表定义两个指针指向头节点,然后同时一步一步指向next,当next为null时,分别指向对方的头结点。直到指针指向的引用为同一个对象就是所求, 因为两个相交链表只有相交点前面的长度...原创 2020-02-08 01:26:41 · 1564 阅读 · 0 评论 -
从尾到头打印链表
文章目录从尾到头打印链表题目描述示例解题思路代码从尾到头打印链表题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。示例示例 1:输入: 1->2->3->4输出: [4,3,2,1]解题思路先进后出首先想到的是栈,那么我们就可以使用虚拟机栈来做这件事,也就是递归来解决。代码public class PrintListFromTailTo...原创 2020-02-06 23:39:15 · 1111 阅读 · 0 评论 -
分隔链表
文章目录分隔链表题目描述示例解题思路代码leetcode记录思路转自于官方分隔链表题目描述给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->...原创 2019-09-04 18:35:46 · 1234 阅读 · 0 评论 -
反转链表II
文章目录反转链表II题目描述示例解题思路代码leetcode展示反转链表II题目描述反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL解题思路找到m...原创 2019-09-05 00:40:42 · 1160 阅读 · 0 评论 -
环形链表(快慢指针)
文章目录环形链表(快慢指针)题目思路代码leetcode展示环形链表(快慢指针)题目在leetcode上有两道关于环形链表的题,分别是:给定一个链表,判断链表中是否有环。给定一个链表,返回链表开始入环的第一个节点。如上图所示,第一题你需要返回true,第二道题你需要告诉人家入环点为2。思路我的第一反应是哈希表,这样的时间复杂度可以控制在O(n),但是空间复杂度也是O(n)。...原创 2019-09-06 17:48:08 · 1676 阅读 · 1 评论 -
回文链表
文章目录回文链表题目描述示例解题思路代码leetcode展示回文链表题目描述请判断一个链表是否为回文链表。进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?示例示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true解题思路本题要求时间复杂度为O(n),即整个链表只能被遍历一次。首...原创 2019-09-07 19:41:06 · 1128 阅读 · 0 评论 -
对链表进行插入排序
对链表进行插入排序题目对链表进行插入排序。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:...原创 2019-09-08 18:19:38 · 2981 阅读 · 0 评论 -
从链表中删去总和值为零的连续节点
从链表中删去总和值为零的连续节点题目给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止。删除完毕后,请你返回最终结果链表的头节点。你可以返回任何满足题目要求的答案。示例示例 1:输入:head = [1,2,-3,3,1]输出:[3,1]提示:答案 [1,2,1] 也是正确的。示例 ...原创 2019-09-10 15:06:31 · 1937 阅读 · 1 评论 -
相交链表
文章目录相交链表题目描述示例解题思路代码leetcode展示相交链表题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of ...原创 2019-09-04 13:37:28 · 1295 阅读 · 0 评论 -
删除排序链表中的重复元素(没排序的版本也有)
文章目录LeetCode刷题之删除排序链表中的重复元素题目描述示例解题思路代码没有排序过的链表版本排序过的链表的版本工具类leetcode展示LeetCode刷题之删除排序链表中的重复元素题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->...原创 2019-09-02 21:01:10 · 1643 阅读 · 0 评论 -
旋转链表
文章目录LeetCode刷题之旋转链表题目描述示例解题思路代码leetcode展示LeetCode刷题之旋转链表题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释...原创 2019-09-03 15:08:12 · 1359 阅读 · 0 评论 -
两两交换链表中的节点
文章目录LeetCode刷题之两两交换链表中的节点题目描述示例解题思路代码leetcode展示LeetCode刷题之两两交换链表中的节点题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例给定 1->2->3->4, 你应该返回 2->1->4->3.解题思路先定义...原创 2019-09-03 11:37:45 · 1452 阅读 · 0 评论 -
重排链表
文章目录LeetCode刷题之重排链表题目描述示例解题思路代码(比较长,待优化)工具类leetcode展示LeetCode刷题之重排链表题目描述给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例示例 1:给定链表 1->2->3-&g...原创 2019-09-02 23:23:43 · 1274 阅读 · 0 评论 -
删除链表的倒数第N个节点
文章目录LeetCode刷题之删除链表的倒数第N个节点题目描述示例解题思路代码leetcode记录LeetCode刷题之删除链表的倒数第N个节点题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->...原创 2019-08-28 16:11:19 · 80799 阅读 · 0 评论 -
合并两个有序链表
文章目录LeetCode刷题之合并两个有序链表题目描述示例解题思路代码leetcode展示LeetCode刷题之合并两个有序链表题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路这道题还是很...原创 2019-08-29 14:26:22 · 3044 阅读 · 0 评论 -
链表的中间结点
文章目录LeetCode刷题之链表的中间结点题目描述示例解题思路代码工具类leetcode展示LeetCode刷题之链表的中间结点题目描述给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结...原创 2019-09-02 13:25:13 · 1218 阅读 · 0 评论 -
移除链表元素
文章目录LeetCode刷题之移除链表元素题目描述示例解题思路代码工具类leetcode展示LeetCode刷题之移除链表元素题目描述删除链表中等于给定值 val 的所有节点。示例输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解题思路这道题主要要考虑两种特殊情况,考虑完...原创 2019-09-02 20:27:09 · 1135 阅读 · 0 评论 -
删除排序链表中的重复元素 II
文章目录LeetCode刷题之删除排序链表中的重复元素 II题目描述示例解题思路代码leetcode展示LeetCode刷题之删除排序链表中的重复元素 II题目描述给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例...原创 2019-09-03 22:38:20 · 1366 阅读 · 0 评论