给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。
请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。
下图中蓝色边和节点展示了操作后的结果:
解题思路:
题目意思就是把链表2嵌入到链表1中,把链表1的一部分取下来,再把链表2补上去
挺简单的,先找到a节点的前一个节点,记录下来,因为接上链表2后这个节点后面就是链表2的头结点。然后再找到b节点的下一个节点,链表2的尾节点的下一个节点就是这个节点
代码如下:
ListNode cur = list1;
//找到a的前一个节点
for(int i = 0;i < a-1;i++){
cur = cur.next;
}
//找到b节点的后一个节点
ListNode pre = cur.next;
for(int j = a;j < b; j++){
pre = pre.next;
}
pre = pre.next;
找到链表2的尾节点
ListNode l2 = list2;
while( l2.next != null ){
l2 = l2.next;
}
//合并在一起
cur.next = list2;
l2.next = pre;
return list1;