在陣列中找到第 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 如果不考慮時間複雜度和空間複雜度,這道題目有很多種方法,利用一種排序演算法將陣列倒敘排序...