力扣:1669. 合并两个链表

This commit is contained in:
huangge1199 2021-03-19 13:15:57 +08:00
parent 8b2979d1a4
commit b36adacb88

View File

@ -0,0 +1,70 @@
package com.code.leet.study.t2021.t20210305;
import com.code.leet.entiy.ListNode;
/**
* 给你两个链表 list1  list2 它们包含的元素分别为 n 个和 m
* <p>
* 请你将 list1 中第 a 个节点到第 b 个节点删除并将list2 接在被删除节点的位置
* <p>
* 下图中蓝色边和节点展示了操作后的结果
* <p>
* <p>
* 请你返回结果链表的头指针
* <p>
*  
* <p>
* 示例 1
* <p>
* <p>
* <p>
* 输入list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]
* 输出[0,1,2,1000000,1000001,1000002,5]
* 解释我们删除 list1 中第三和第四个节点并将 list2 接在该位置上图中蓝色的边和节点为答案链表
* 示例 2
* <p>
* <p>
* 输入list1 = [0,1,2,3,4,5,6], a = 2, b = 5, list2 = [1000000,1000001,1000002,1000003,1000004]
* 输出[0,1,1000000,1000001,1000002,1000003,1000004,6]
* 解释上图中蓝色的边和节点为答案链表
*  
* <p>
* 提示
* <p>
* 3 <= list1.length <= 104
* 1 <= a <= b < list1.length - 1
* 1 <= list2.length <= 104
* <p>
* 来源力扣LeetCode
* 链接https://leetcode-cn.com/problems/merge-in-between-linked-lists
* 著作权归领扣网络所有商业转载请联系官方授权非商业转载请注明出处
*/
public class MergeInBetween {
/**
* 1669. 合并两个链表
*/
public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {
ListNode temp = list1;
int num = 0;
while (temp != null) {
ListNode trans = new ListNode(0);
if (num == a - 1) {
trans.next = temp.next;
temp.next = list2;
temp = trans;
}
if (num == b + 1) {
ListNode temp2 = list2;
while (temp2!=null&&temp2.next!=null){
temp2 = temp2.next;
}
assert temp2 != null;
temp2.next = temp;
break;
}
num++;
temp = temp.next;
}
return list1;
}
}