題目描述
有乙個整數陣列,請你根據快速排序的思路,找出陣列中第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 輸出每組...