1. 程式人生 > >第K大元素

第K大元素

inf OS write nbsp lin 但是 hal cor log

在數組中找到第k大的元素

註意事項

你可以交換數組中的元素的位置

樣例

給出數組 [9,3,2,4,8],第三大的元素是 4

給出數組 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此類推

挑戰

要求時間復雜度為O(n),空間復雜度為O(1)

第一次我用的是冒泡排序,第一層循環循環K次

但是time limited

 1 class Solution {
 2 public:
 3     /*
 4      * param k : description of k
 5      * param nums : description of array and index 0 ~ n-1
6 * return: description of return 7 */ 8 int kthLargestElement(int k, vector<int> nums) { 9 // write your code here 10 for(int i=0;i<k;i++) 11 for(int j=0;j<nums.size()-i-1;j++) 12 { 13 if(nums[j]>nums[j+1]) 14 {
15 int temp=nums[j]; 16 nums[j]=nums[j+1]; 17 nums[j+1]=temp; 18 } 19 } 20 return nums[nums.size()-k]; 21 } 22 };

第K大元素