
链表合集
链表总结
斌同学斌同學
长路漫漫,乞相伴而行啊
展开
-
(链表)2. 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807题解思路将当前结点初始化为返回列表的哑结点。将进位carry 初始原创 2020-09-09 19:56:25 · 208 阅读 · 0 评论 -
(链表)82. 删除排序链表中的重复元素 II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3题解思路为了防止删除头结点的极端情况发生,先创建空结点dummy,使dummy指向传入的head结点。然后创建cur的指针,指向链表的头部(即dummy)。接着对cur指针迭代,因为要对比c原创 2020-09-08 10:24:02 · 177 阅读 · 0 评论 -
(链表)83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3题解思路指定 cur 指针指向头部 head当 cur 和 cur.next 的存在为循环结束条件,当二者有一个不存在时说明链表没有去重复的必要了当 cur.val 和 cur.next.val 相等时说明需要去重,则将 cur 的下一个指针指向下一个的下一个,原创 2020-09-08 09:11:42 · 139 阅读 · 0 评论 -
(链表)12. 相交链表
输入两个链表,找出它们的第一个公共节点。题解思路指针 pA 指向 A 链表,指针 pB 指向 B 链表,依次往后遍历如果 pA 到了末尾,则 pA = headB 继续遍历如果 pB 到了末尾,则 pB = headA 继续遍历比较长的链表指针指向较短链表head时,长度差就消除了如此,只需要将最短链表遍历两次即可找到位置实现代码public class Solution { public ListNode getIntersectionNode(ListNode headA, Li原创 2020-09-05 22:43:56 · 123 阅读 · 0 评论 -
(链表)11. 单链表反转
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解思路双指针实现实现代码class Solution { public ListNode reverseList(ListNode head) { ListNode pre = null; ListNode cur = hea原创 2020-09-05 22:39:48 · 128 阅读 · 0 评论 -
(链表)3. 有序链表合并
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解思路终止条件:两条链表分别名为 l1 和 l2,当 l1 为空或 l2 为空时结束返回值:每一层调用都返回排序好的链表头本级递归内容:如果 l1 的 val 值更小,则将 l1.next 与排序好的链表头相接,l2 同理O(m+n),m 为 l1的长度,n 为原创 2020-09-05 22:35:59 · 149 阅读 · 0 评论