題目大意:給出長度為 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 ...