91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

工布江达县| 万荣县| 南平市| 永济市| 历史| 荥经县| 德阳市| 东明县| 乐清市| 墨玉县| 宁明县| 龙海市| 平顺县| 石首市| 奇台县| 营口市| 理塘县| 贡嘎县| 抚顺市| 吉安县| 金川县| 会宁县| 上虞市| 蛟河市| 静乐县| 彰化市| 托克逊县| 灯塔市| 道真| 兴义市| 汶上县| 嘉善县| 合水县| 文登市| 房山区| 稻城县| 台州市| 喜德县| 铁岭县| 监利县| 昂仁县|