LeetCode第22題--合併兩個排序好的鏈表

LeetCode第22題–合併兩個排序好的鏈表



代碼


public class MergeSortedLists {
    public class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    }
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode result = null;  //變量在申請之後一定要初始化,否則會報編譯錯誤

        //下面是三種特殊的情況,當其中有一個鏈表爲空時,直接返回不爲空的一個,如果兩個鏈表全部爲空,則返回空
        if(l1 == null && l2 != null){
            result = l2;
            return result;
        }

        if(l2 == null && l1 != null){
            result = l1; 
            return result;
        }

        if(l1 == null && l2 == null){
            result = null;
            return result;
        }

        result = new ListNode(0);   //創建新的節點
        ListNode current = result;   //創建一個當前節點,result的指針不會發生變化,變化的是current
        //System.out.println(current.val);
        //處理兩個鏈表都不爲空的情況
        while(l1 != null && l2 != null){
            if(l1.val > l2.val){
                current.val = l2.val;
                l2 = l2.next;
                if(l2 == null){
                    current.next = l1;
                    break;
                }
                ListNode temp = new ListNode(0);
                current.next = temp; 
                current = current.next;
            }else if(l1.val < l2.val) {
                current.val = l1.val;
                l1 = l1.next;
                if(l1 == null){
                    current.next = l2;
                    break;
                }
                ListNode temp = new ListNode(0);
                current.next = temp; 
                current = current.next;
            }else{  //l1.val == l2.val
                current.val = l1.val;

                ListNode temp = new ListNode(0);
                current.next = temp; 
                current = current.next;
                current.val = l2.val;

                l1 = l1.next;
                l2 = l2.next;
                if(l1 == null){
                    current.next = l2;
                    break;
                }

                if(l2 == null){
                    //System.out.println(l1.val + " " + l1.next.val);
                    //System.out.println("娃娃");
                    current.next = l1;
                    //System.out.println(current.next.val + " " + current.next.next.val);
                    break;
                }

                temp = new ListNode(0);
                current.next = temp; 
                current = current.next;

            }
        }

        return result;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章