牛客 第k小數 線性尋找第 k 小數

2021-10-06 12:21:40 字數 705 閱讀 3099

題目大意:給出長度為 n 的數列 a ,要求找到第 k 小的數

題目分析:因為資料給的足夠大,所以約束就是必須線性完成操作,stl 中的 nth_element() 函式可以完美實現操作,算是學到了一波,格式:nth_element( a.begin() , a.begin() + k , a.end() ) ,那麼 a[ k ] 就是第 k + 1 小的數,完成操作後,整個序列滿足 [ 0 , k - 1 ] 的數都不大於 k ,[ k + 1 , end ] 的數都不小於 k

**:

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf=0x3f3f3f3f;

const int n=5e6+100;

inline int read()

while(ch >= '0' && ch <= '9')

return x * f;

}int a[n];

int main()

return 0;

}

求第k小數

求第k小數,無非就是考查排序,請參考我最新的博文吧求第k小數 直接使用priority queue,在網上看到許多使用快排來求第k小數都是認為第k小就是排好序陣列中第k個元素,但是如果陣列中有相同的元素呢,例如 1,2,2,2,3,5 認為第三小是3還是2呢?我刷題時遇到的是認為是3。沒有想到什麼好...

查詢第K小數

查詢乙個陣列的第k小的數,注意同樣大小算一樣大。如 2 1 3 4 5 2 第三小數為3。輸入描述 輸入有多組資料。每組輸入n,然後輸入n個整數 1 n 1000 再輸入k。輸出描述 輸出第k小的整數。輸入例子 6 2 1 3 5 2 2 3 輸出例子 3 import j a.util.array...

牛客 尋找第k大數字

有乙個整數陣列,請你根據快速排序的思路,找出陣列中第k大的數。給定乙個整數陣列a,同時給定它的大小n和要找的k k在1到n之間 請返回第k大的數,保證答案存在。示例1 1,3,5,2,2 5,32public class findkth 遞迴尋找陣列中第k大的元素 private int find ...