JZ16 合併兩個排序的鏈表

題目描述

輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。
 
思路: 歸併算法的思路,注意首先判斷兩個鏈表節點都不爲空,判斷大小while循環之後,要看哪個鏈表節點不爲空,使用哨兵節點的方法處理頭節點。
func Merge( pHead1 *ListNode ,  pHead2 *ListNode ) *ListNode {
    // write code here
    if pHead1 == nil && pHead2 == nil {
        return nil
    }
    if pHead1 == nil {
        return pHead2
    }
    if pHead2 == nil {
        return pHead1
    }
    dummyNode := &ListNode{Val: -1}
    head := dummyNode
    for pHead1 != nil && pHead2 != nil {
        if pHead1.Val < pHead2.Val {
            head.Next = pHead1
            pHead1 = pHead1.Next
        } else {
            head.Next = pHead2
            pHead2 = pHead2.Next
        }
        head = head.Next
    }
    
    if pHead1 != nil {
        head.Next = pHead1
    }
    if pHead2 != nil {
        head.Next = pHead2
    }
    return dummyNode.Next
}

 

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