题解 | #合并两个排序的链表#
合并两个排序的链表
http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
思路
将递归结果挂在val较小的节点后面
步骤
- 递归的终止判断:其中一条链表为空
- 比较得出val值较小的节点,并保存下来little
- val值较小的链表继续往后走,并将递归结果挂在little后面
- 返回little
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
// 终止条件
// 当其中一个链表为空时,返回另外一个链表
if(list1 == null || list2 == null){
return list1==null?list2:list1;
}
// 将val值小的节点存储下来
ListNode little = list1.val<list2.val ? list1 : list2;
// val较小的链表指针往后走
// 将递归结果挂在当前具有较小val的链表后面
little.next = Merge(little.next,little==list1?list2:list1);
return little;
}
}