1669. 合并两个链表

Posted 不吐西瓜籽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1669. 合并两个链表相关的知识,希望对你有一定的参考价值。

算法记录

LeetCode 题目:

  给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。



说明

一、题目

  输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]
  输出:[0,1,2,1000000,1000001,1000002,5]

二、分析

  • 利用对象的指向改变来连接即可,需要注意的是删除范围的判断,删除区间,也就是连接的元素指向后一个。
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {
        ListNode temp = list1;
        ListNode temp2 = list2;
        ListNode t1 = null;
        ListNode t2 = null;
        int count = 0;
        while(temp != null) {
            count++;
            if(count == a) t1 = temp;
            if(count == b + 1) {
                t2 = temp;
                break;
            }
            temp = temp.next;
        }
        while(temp2.next != null) temp2 = temp2.next;
        t1.next = list2;
        temp2.next = t2.next;
        return list1;
    }
}

总结

熟悉链表的对象指向问题。

以上是关于1669. 合并两个链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 1669. 合并两个链表

LeetCode Algorithm 1669. 合并两个链表

1669. 合并两个链表

LeetCode JavaScript实现 合并链表 题型汇总

链表4:合并有序链表的3道题

链表5:6种方法实现合并K个有序链表