题目:
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
思路:
使用了递归,但是边界条件没有处理好!
答案代码:
创建一个新的链表,在一个链表节点添加结束之前,进行循环;最后肯定会余下一个链表没有添加结束
这里随便创建一个新节点
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
//剑指Offer中用了 递归插入的方式,失败了
ListNode temp = new ListNode(0),cur = temp;
//两个都不空时,进行插入操作;
//其实理解为:创建一个新链表,挨个把l1和l2的节点按大小连接上去,一个新链表
while(list1 != null && list2 != null){
if(list1.val <= list2.val){
cur.next = list1;
list1 = list1.next;
}else{
cur.next = list2;
list2 = list2.next;
}
cur = cur.next;
}
//循环结束后,会出现一个不等于0的情况
cur .next = (list1 != null) ? list1 : list2;
return temp.next;
}
}