尋找第k個最大數 C

2021-10-24 04:29:11 字數 871 閱讀 5571

題目描述

有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。

給定乙個整數陣列a,同時給定它的大小n和要找的k(k在1到n之間),請返回第k大的數,保證答案存在。

1.暴力法

class

finder

2.快排法

class

finder

intquicksortk

(vector<

int>

&nums,

int start,

int end,

int k)

intpartition

(vector<

int>

&nums,

int start,

int end)

} i++

;swap

(nums[i]

,nums[end]);

return i;}}

;

3.堆排序法

1.自下向上構建最大堆,構建完成後堆頂為最大值

2.迴圈操作:刪除堆頂並重新堆排序,刪除操作執行k-1次後堆頂即為所求值

class

finder

return a[0]

;}void

maxheap

(vector<

int>

&a,int i,

int size)

}void

buildheap

(vector<

int>

&a,int size)}}

;

尋找最大數

描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n,m n可能是乙個很大的整數,但其位數不超過100位,並且保證資料...

尋找最大數

時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n...

尋找最大數

尋找最大數 三 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述給出乙個整數n,每次可以移動2個相鄰數字上的數字,最多移動k次,得到乙個新的整數。求這個新的整數的最大值是多少。輸入多組測試資料。每組測試資料佔一行,每行有兩個數n和k 1 n 10 18 0 k 100 輸出每組...