基本思路:
1.从list1的头结点开始向后移动 a - 1 步,定位到 le;
2.从list1的头结点开始向后移动 b +1 步,定位到 ri;
3.把list2填充到le后,填充完毕后接上ri
代码实现:
/**
* 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) {
//定义左边界指针命名为le,并通过for循环移动到它的位置
ListNode le = list1;
for(int i = 0;i < a - 1;i++){
le = le.next;
}
//定义右边界指针命名为ri,并通过for循环移动到它的位置
ListNode ri = list1;
for(int j = 0;j < b + 1;j++){
ri = ri.next;
}
//将lsit2的头节点拼接到左边界
le.next = list2;
//将lsit2的节点逐个填充
while(list2.next != null){
list2 = list2.next;
}
//连接lsit1右边界后的结点ri
list2.next = ri;
return list1;
}
}