LintCode 題目 第k大元素

2021-09-29 05:51:20 字數 1042 閱讀 3979

在陣列中找到第 k 大的元素。

樣例 1:

輸入:

n = 1, nums = [1,3,4,2]

輸出:4

樣例 2:

輸入:

n = 3, nums = [9,3,2,4,8]

輸出:4

直接使用sort函式對陣列元素進行排序,最後輸出所求的k大的元素。

這裡使用的是stl容器中的vector,並不是平時定義的int nums,使用vector的原因是,vector是乙個可變陣列,陣列長度會隨著元素的個數而變化,若不會使用vector的讀者可以參考:vector常用解法及詳解

其餘的stl容器請參考:stl

若要是在lintcode的ide中想要新增乙個新的自定義函式,需要在函式前加上static,否則會報錯:

static bool lcc(int a,int b)
在**段中新增:

sort(nums.begin(),nums.end());

int num = nums.size();

return nums[num-n];

即可:

自定義乙個排序原則函式:

static bool lcc(int a,int b)
在**段中新增:

sort(nums.begin(),nums.end(),lcc);

int num = nums.size();

return nums[n-1];

即可:

lintcode 第k大元素

在陣列中找到第 k 大的元素。樣例 1 輸入 n 1,nums 1,3,4,2 輸出 4 樣例 2 輸入 n 3,nums 9,3,2,4,8 輸出 4 要求時間複雜度為o n 空間複雜度為o 1 使用快速排序的思路,第k大的元素就是排序完成之後的第nums.size k位置上的元素。即qsort ...

第k大元素

在陣列中找到第k大的元素 最先想到的是簡單排序,但是簡單排序超時,於是想到改造快排,快排的思想是每次確定乙個元素在陣列中的下標,如果確定的下標為k那該元素為k大,若下標大於k,第k大在改下標之前.class solution public int pat int nums,int start,int...

第K大元素

在陣列中找到第k大的元素。給出陣列 9,3,2,4,8 第三大的元素是4 給出陣列 1,2,3,4,5 第一大的元素是5,第二大的元素是4,第三大的元素是3,以此類推 要求時間複雜度為o n 空間複雜度為o 1 如果不考慮時間複雜度和空間複雜度,這道題目有很多種方法,利用一種排序演算法將陣列倒敘排序...