牛客網刷題 尋找第K大

2021-10-14 15:08:15 字數 1214 閱讀 8994

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

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

輸入描述:

輸入乙個陣列、陣列長度、k大

輸出描述:

輸出k大座標

輸入

[1,3,5,2,2],5,3

輸出

2

本題與之前的最小的k個數思路相類似,有興趣的小夥伴可以看看之前的文章,這裡只通過變形的快速排序實現。

通過快速排序的思路實現,當快速排序後的基準值與k相等時,則找到了第k大值(快速排序此處用的降序排序)。

public

class

solution

public

intfind

(int

a,int start,

int end,

int k)

if(povitindex +

1> k)

// 當基準等於k時,返回

return a[povitindex];}

// 降序排列

private

intpartition

(int

a,int start,

int end)

// 從右向左找第乙個大於基準值的

while

(a[--j]

< povit)

// 如果i大於j,跳出,不需要交換

if(i >= j)

break

;// 小於基準值的元素和大於基準值的元素交換,大於基準值的元素往後,小於基準值的元素往前

exchange

(a, i, j);}

// 交換0和大於基準值的元素,因為是降序排列

exchange

(a, start, j)

;return j;

}// 交換值

private

void

exchange

(int

a,int i,

int j)

}

小夥伴如果想測試的話,可以直接到牛客網這個鏈結做測試

尋找第k大-牛客網

牛客網 高頻面試題 尋找第K大

尋找第k大 牛客網 有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。給定乙個整數陣列a,同時給定它的大小n和要找的k k在1到n之間 請返回第k大的數,保證答案存在。示例1輸入 1 3,5 2,2 5,3返回值 2和這篇部落格思路類似 牛客網 高頻面試題 最小的k個數 我是一塊小石頭 ...

牛客網刷題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 立華奏在學習初中數學的時候遇到了這樣一道大水題 設箱子內有 n 個球,其中給 m 個球打上標記,設一次摸球摸到每乙個球的概率均等,求一次摸球摸到打標記的球的概率 e...

牛客網刷題

時間限制 c c 2秒,其他語言4秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld 立華奏是乙個剛剛開始學習 oi 的萌新。最近,實力強大的 qingyu 當選了 iods 9102 的出題人。眾所周知,iods 是一場極其毒瘤的比賽。為了在這次...