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