lintcode 第k大元素

2021-09-11 10:33:59 字數 602 閱讀 7004

在陣列中找到第 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(nums, 0, nums.size(), nums.size() - n)

根據基準數調換完位置之後,判斷k的位置和i j的關係,進行下一輪的調換。

class solution 

int qsort(vector&v, int start, int end, int k)

}if (j >= k && k >= start)

return qsort(v, start, j, k);

else if(i <= k && k <= end)

return qsort(v, i, end, k);

return temp;

}};

LintCode 題目 第k大元素

在陣列中找到第 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,使用v...

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