给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。
请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。
下图中蓝色边和节点展示了操作后的结果:
![](https://i-blog.csdnimg.cn/blog_migrate/5a3bb4facd1664fca561b65eafd5c328.png)
请你返回结果链表的头指针。
class Solution {
public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) {
ListNode begin = list1;// 记录 list1 下标为 a 的前驱节点
ListNode end = list1;// 记录 list1 下标为 b 的后驱节点
for(int i = 0;i < a-1;i++){// 找到下标为 a -1 的节点,也就是 下标为 a 的前驱节点
begin = begin.next;
}
for(int i = 0;i < b+1;i++){// 找到 下标为 b 的 后驱节点
end = end.next;
}
ListNode cur = list2;// 代替 list2 去遍历 自身 链表节点
while(cur.next != null){// 找到list2的尾节点
cur = cur.next;
}
begin.next = list2;
cur.next = end;
return list1;
}
}