---------------------------------2021.9.12-----------------------------------------
思路: 比较两个链表的大小然后不停迭代
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
//遍历两个链表,比较大小
ListNode listNode=new ListNode(0);
while(l1.next!=null||l2.next!=null){
if(l1.val>=l2.val||l1.next==null){
listNode.val=l2.val;
l2=l2.next;
}
if(l1.val<l2.val||l2.next==null){
listNode.val=l1.val;
l1=l1.next;
}
listNode=listNode.next;
}return listNode;
}
20行报错
只能参考别人注解。
我这写的是个啥啊。。
链表需要先给next赋值,才能实现递归(node=node.next)
还需要一个哨兵节点用来做返回值
(18条消息) P21合并两个有序链表_风の记忆-CSDN博客https://blog.csdn.net/m0_37694106/article/details/104001654
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
//遍历两个链表,比较大小
ListNode prehead=new ListNode(-1);
ListNode listNode=prehead;
while(l1!=null&&l2!=null){
if(l1.val>=l2.val){
listNode.next=l2;
l2=l2.next;
}
if(l1.val<l2.val){//上面l2的值已经被修改过了,会出bug
listNode.next=l1;
l1=l1.next;
}
listNode=listNode.next;
}
listNode.next = l1 == null ? l2 : l1;
return prehead.next;
}
emmm么,还是报错
改成else就好了.
递归还没写,,,