题意:
给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。
请你将 list1 中第 a 个节点到第 b 个节点删除,并将list2 接在被删除节点的位置。
数据范围:
3 <= list1. length <= 104
1 <= a <= b < list1. length - 1
1 <= list2. length <= 104
解法:
模拟即可.
找到第( a- 1 ) 和第( b) 个结点的位置就行了.
但是leetcode的c++ 代码使用free好像会报错.
code:
class Solution {
public :
ListNode* mergeInBetween ( ListNode* list1, int a, int b, ListNode* list2) {
ListNode * pre_pa= list1;
for ( int i= 1 ; i<= a- 1 ; i++ ) pre_pa= pre_pa- > next;
ListNode * nt_pb= list1;
for ( int i= 1 ; i<= b+ 1 ; i++ ) nt_pb= nt_pb- > next;
ListNode * p= pre_pa- > next;
while ( p!= nt_pb) {
ListNode* temp= p- > next;
p= temp;
}
pre_pa- > next= list2;
ListNode * tail2= list2;
while ( tail2- > next) tail2= tail2- > next;
tail2- > next= nt_pb;
return list1;
}
} ;