国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

找出亂序數(shù)組第k大的數(shù)字(堆排序?qū)觯?/h1>

這篇具有很好參考價值的文章主要介紹了找出亂序數(shù)組第k大的數(shù)字(堆排序?qū)觯?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用堆排序來解決《亂序數(shù)組第k大的數(shù)字》
先放上代碼(雖然leetcode要求O(n),但是堆排序是O(nlogn))
`class Solution {
public int findKthLargest(int[] nums, int k) {
int heapSize = nums.length;
buildHeap(nums, heapSize);
for(int i = nums.length - 1; i >= nums.length - k + 1; i--) {
swap(nums, 0, i);
heapSize--;
buildHeap(nums, heapSize);
}
return nums[0];
}

public void buildHeap(int[] nums, int heapSize) {
    for(int i = heapSize / 2 - 1; i >= 0; i--) {
        maximum(nums, i, heapSize);
    }
}

public void maximum(int[] nums, int root, int heapSize) {
    int lChild = root * 2 + 1;
    int rChild = root * 2 + 2;
    int largest = root;

    if (lChild < heapSize && nums[lChild] > nums[largest]) {
        largest = lChild;
    }
    if (rChild < heapSize && nums[rChild] > nums[largest]) {
        largest = rChild;
    }
    // 如果largest不再是入?yún)⒛莻€根節(jié)點,說明有子節(jié)點比它大,要換,換了之后繼續(xù)往下遞歸看還有沒有
    if (largest != root) {
        swap(nums, root, largest);
        maximum(nums, root, largest);
    }
}

public void swap(int[] nums, int a, int b) {
    int temp = nums[a];
    nums[a] = nums[b];
    nums[b] = temp;
}

}`

比較有收獲的幾個點:文章來源地址http://www.zghlxwxcb.cn/news/detail-620915.html

  • 堆里面兒子節(jié)點是父親節(jié)點n的n2+1和n2+2
  • 刪除堆的堆頂是通過把堆頂元素和堆最后的元素交換,并且heapSize--來實現(xiàn)的
  • 如果有兒子節(jié)點比父親節(jié)點大,那么需要交換父親節(jié)點和這個兒子節(jié)點,并且繼續(xù)將交換之后新的兒子節(jié)點作為新的根節(jié)點往下遞歸判斷
  • 可以從heapSize/2這個節(jié)點開始判斷,并不斷--,最后得到的數(shù)組[0]就是正確的堆頂,進行進一步處理即可

到了這里,關于找出亂序數(shù)組第k大的數(shù)字(堆排序?qū)觯┑奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 劍指 Offer 56 - II. 數(shù)組中數(shù)字出現(xiàn)的次數(shù) II(位運算 / 哈希表 / 排序)

    鏈接:劍指 Offer 56 - II. 數(shù)組中數(shù)字出現(xiàn)的次數(shù) II 難度:中等 在一個數(shù)組 nums 中除一個數(shù)字只出現(xiàn)一次之外,其他數(shù)字都出現(xiàn)了三次。請找出那個只出現(xiàn)一次的數(shù)字。 示例 1: 輸入:nums = [3,4,3,3] 輸出:4 示例 2: 輸入:nums = [9,1,7,9,7,9,7] 輸出:1 限制: 1 = nums.length = 10000 1

    2024年02月13日
    瀏覽(22)
  • 每天一道leetcode:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I(適合初學者&二分查找)

    每天一道leetcode:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I(適合初學者&二分查找)

    統(tǒng)計一個數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)。 0 = nums.length = 10^5 -10^9 = nums[i] = 10^9 nums 是一個非遞減數(shù)組 -10^9 = target = 10^9 使用兩次二分查找找到target在數(shù)組中的左右邊界,然后長度就是右邊界減去左邊界再加一,最后返回長度即可。 ? 歡迎大家在評論區(qū)討論,如有不懂的代碼部分

    2024年02月14日
    瀏覽(27)
  • 新增長100人研討會:快消零售專場探討招商加盟數(shù)字化轉(zhuǎn)型實戰(zhàn)

    新增長100人研討會:快消零售專場探討招商加盟數(shù)字化轉(zhuǎn)型實戰(zhàn)

    2024年2月2日下午,一場由紛享銷客與楊國福集團聯(lián)合主辦的招商加盟數(shù)字化轉(zhuǎn)型研討會在上海成功舉辦。本次研討會匯聚了眾多快消零售業(yè)界的領軍人物,共同探討行業(yè)未來的新增長點。 會議伊始,楊國福集團數(shù)字化中心負責人王林林發(fā)表了主題演講,深入剖析了楊國福在招

    2024年02月21日
    瀏覽(15)
  • C++ 緩存再排序,解決多線程處理后的亂序問題,不知道思路對不對[撓下巴]

    使用map默認會根據(jù)key排序的原理作緩存,隊列滿了依次推出,拋棄掉過時的數(shù)據(jù)

    2024年02月14日
    瀏覽(18)
  • 編程練習【找出數(shù)組中的幸運數(shù)】

    在整數(shù)數(shù)組中,如果一個整數(shù)的出現(xiàn)頻次和它的數(shù)值大小相等,我們就稱這個整數(shù)為「幸運數(shù)」。 給你一個整數(shù)數(shù)組 arr,請你從中找出并返回一個幸運數(shù)。 如果數(shù)組中存在多個幸運數(shù),只需返回 最大 的那個。 如果數(shù)組中不含幸運數(shù),則返回 -1 。 示例 1: 輸入:arr = [2,2

    2024年02月09日
    瀏覽(14)
  • 找出數(shù)組中最小K個數(shù)【最小堆】

    找出數(shù)組中最小K個數(shù)【最小堆】

    面試題 17.14. 最小K個數(shù) - 力扣(LeetCode) 設計一個算法,找出數(shù)組中最小的k個數(shù)。以任意順序返回這k個數(shù)均可。 示例: 提示: 0 = len(arr) = 100000 0 = k = min(100000, len(arr))

    2024年02月11日
    瀏覽(13)
  • leetcode 215.數(shù)組中第k大的元素

    leetcode 215.數(shù)組中第k大的元素

    ?? leetcode鏈接:數(shù)組中第k大的元素 思路: 使用堆數(shù)據(jù)結(jié)構(gòu),大堆的堆頂是堆內(nèi)最大的元素,也就是把當前堆 pop k - 1 次,第 k 次 top 出來的元素就是第 k 大的數(shù)。 代碼:

    2024年02月09日
    瀏覽(31)
  • 【基礎算法】[PTA]-找出不是兩個數(shù)組共有的元素

    【基礎算法】[PTA]-找出不是兩個數(shù)組共有的元素

    找出不是兩個數(shù)組共有的元素 題目描述: 解題思路: 【整體思路】:在兩個整型數(shù)組中,找出不是兩者共有的元素,意思就是既要在第一個數(shù)組中找出第二個數(shù)組中沒有出現(xiàn)的元素,也要在第二個數(shù)組中找出第一個數(shù)組中沒有出現(xiàn)的元素。所以這里可以每個數(shù)組做一次主體

    2024年02月04日
    瀏覽(21)
  • 2023全云在線聯(lián)合微軟AIGC專場沙龍:人工智能與企業(yè)創(chuàng)新,促進創(chuàng)造力的數(shù)字化轉(zhuǎn)型

    2023全云在線聯(lián)合微軟AIGC專場沙龍:人工智能與企業(yè)創(chuàng)新,促進創(chuàng)造力的數(shù)字化轉(zhuǎn)型

    6月29日,由全云在線平臺和微軟聯(lián)合主辦的人工智能與企業(yè)創(chuàng)新:促進創(chuàng)造力的數(shù)字化轉(zhuǎn)型——2023AIGC微軟專場沙龍在廣州天河區(qū)正佳萬豪酒店舉行。 關于2023AIGC微軟專場沙龍 GPT翻開了AGI新的一頁,也翻開了各行各業(yè)的新篇章。 2022年11月30日 Open AI 的 ChatGPT 3.5 預訓練大模型發(fā)

    2024年02月12日
    瀏覽(99)
  • Matlab | 找出數(shù)組/向量中的重復項的索引

    Matlab | 找出數(shù)組/向量中的重復項的索引

    輸入一個數(shù)組,里面含有重復項,想要將其重復的項的序號指示出來。 unique()函數(shù)可以去除數(shù)組的重復項,并且返回索引。我們可以利用這個返回的索引,進而找出原數(shù)組中重復出現(xiàn)的位置。 貼了兩份代碼,第一份輸出形式數(shù)組,第二份輸出形式是元胞。

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包