题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:与归并排序思路相同。
用到了一个小技巧,声明头节点时,不声明为null,使数据域为0,返回时返回head.next,这样在代码不需要先给head赋值,代码比较简洁。
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
//空判断
if(list1 == null) return list2;
if(list2 == null) return list1;
ListNode head = new ListNode(0);
//循环条件是一直到两个链表都为空
ListNode cur = head;
while(list1!=null && list2!=null){
if(list1.val<=list2.val){
cur.next = list1;
cur = cur.next;
list1 = list1.next;
}else{
cur.next = list2;
cur = cur.next;
list2 = list2.next;
}
}
//如果list1已经为null
if(list1 == null)
cur.next = list2;
//如果list2已经为null
if(list2 == null)
cur.next = list1;
return head.next;
}
}