亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++如何合并有序鏈表

發布時間:2022-03-17 16:02:30 來源:億速云 閱讀:220 作者:iii 欄目:大數據

這篇文章主要講解了“c++如何合并有序鏈表”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“c++如何合并有序鏈表”吧!

算法:

算法的核心在于兩個有序鏈表的合并操作,K個有序鏈表的合并只是一個變形題目,先拆分成k/2個有序鏈表,然后等比數列減少到1個數列。

題目1:合并兩個有序鏈表

代碼實現:

// 算法: 遞歸的算法,l1<l2,偏移l1.Next,然后執行l1.Next與l2的操作// l1 >=l2的話,偏移l2.Next,然后遞歸l2.Next與l1的操作。/** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {    if l1 == nil {        return l2    }    if l2 == nil {        return l1    }    if l1.Val < l2.Val {        l1.Next = mergeTwoLists(l1.Next, l2)        return l1    }    l2.Next = mergeTwoLists(l1,l2.Next)    return l2}

‘題目2: 合并k個排序鏈表

代碼實現:

/*解法二:分治+遞歸;分治:兩個一組,依次遞減,k,k/2,k/4,k/8...1;遞歸:兩個列表一組,排序*//** * Definition for singly-linked list. * type ListNode struct { *     Val int *     Next *ListNode * } */func mergeKLists(lists []*ListNode) *ListNode {    if len(lists) == 0 {         return nil    }    if len(lists) == 1 {        return lists[0]    }       for {        n := len(lists)/2        ok := len(lists)%2 == 1        for i:=0;i< n; i++ {            lists[i]=mergeLists(lists[i],lists[i+n])        }        if !ok {            lists = lists[:n]        } else {            lists[n] = lists[len(lists)-1]            lists = lists[:n+1]         }        if len(lists) == 1 {            break        }    }    return lists[0]}
func mergeLists(l1 *ListNode, l2 *ListNode) *ListNode {    if l1 == nil {        return l2    }    if l2 == nil {        return l1    }    if l1.Val < l2.Val {        l1.Next = mergeLists(l1.Next, l2)        return l1    }
   l2.Next = mergeLists(l1, l2.Next)    return l2}

感謝各位的閱讀,以上就是“c++如何合并有序鏈表”的內容了,經過本文的學習后,相信大家對c++如何合并有序鏈表這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

延长县| 吉隆县| 庄浪县| 玛纳斯县| 淮安市| 榕江县| 济源市| 珲春市| 肇州县| 二连浩特市| 芜湖县| 邹平县| 巴彦淖尔市| 托克逊县| 得荣县| 湖口县| 林芝县| 兴隆县| 苍梧县| 城步| 集安市| 昌邑市| 若羌县| 建宁县| 南江县| 沙河市| 灵石县| 齐齐哈尔市| 张北县| 探索| 井陉县| 青冈县| 宝应县| 松滋市| 西平县| 诸城市| 桦南县| 外汇| 绥宁县| 白山市| 泽库县|