问题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:1.从两个链表的当前节点开始,比较两个当前节点值的大小
2.将上述步骤中得到的节点放入一个结果链表中,并将该链表后移一位,得到当前节点
3.重复上述步骤,直至两个当前节点都到各自链表的底部
如图所示:
代码实现:
public ListNode Merge(ListNode list1,ListNode list2) {
//对头指针的特殊考虑
if(list1==null&&list2==null) return null;
if(list1==null) return list2;
if(list2==null) return list1;
ListNode result = new ListNode(1); //结果链表
ListNode currentList1 = list1; //list1当前节点
ListNode currentList2 = list2; //list2当前节点
ListNode resultCurrent = result; //结果链表当前节点
ListNode current = null;
while(currentList1!=null||currentList2!=null){
if((currentList1!=null)&&(currentList2==null||currentList1.val<currentList2.val)){
current = currentList1;
currentList1 = currentList1.next;
}else{
current = currentList2;
currentList2 = currentList2.next;
}
resultCurrent.next = current;
resultCurrent = current;
resultCurrent.next = null;
}
return result.next;
}