讨论/《初级算法》 - 合并两个有序链表/
《初级算法》 - 合并两个有序链表

/**

  • Definition for singly-linked list.
  • public class ListNode {
  • int val;
    
  • ListNode next;
    
  • ListNode() {}
    
  • ListNode(int val) { this.val = val; }
    
  • ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    
  • }
    */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        // 1. 双指针法
        ListNode head=null;
        ListNode node=null;
        while(true){
            if(l1!=null&&(l2==null||l1.val<=l2.val)){// 当l1 更小,或l2遍历完了,就选l1
                if(node!=null){
                    node.next=l1;
                }
                node=l1;
                l1=l1.next;
            }else if(l2!=null){
                if(node!=null){
                    node.next=l2;
                }
                node=l2;
                l2=l2.next;
            }else{// 当l1和l2都为空时,跳出循环
                break;
            }
            if(head==null){// 设置头节点
                head=node;
            }
        }
        return head;
    }
}
展开全部 23 讨论