problem
给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。
请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。
solution
思路过程
- p标记要被删除的节点的的后续节点
- 找到要被删除的开始节点的前续节点,然后指向List2
- 走到list2的尾节点,并指向p
- 返回 list1
- a的计数是从零开始的吗?还是说节点中数值于a和b相等
- 做个实验,是从零开始计数删除的节点
代码
/**
* 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 p=list1;
for(int i=0;i<=b;++i){
p=p.next;
}
ListNode temp=list1;
for(int i=1;i<a;++i){
temp=temp.next;
}
temp.next=list2;
while(temp.next!=null){
temp=temp.next;
}
temp.next=p;
return list1;
}
}