leetcode 215 陣列中的第K個最大元素

2021-10-03 01:55:11 字數 654 閱讀 5019

用快排的劃分演算法定義乙個基準點pos然後[i,j]區間遍歷,

在區間左邊找到乙個比基準點大的數右邊找到乙個比基準點小的數交換

這樣就能確定基準點右邊都是比它大,左邊都是比他小的區間,最後交換基準點與

l1的位置那個這個pos就是整個區間的第l1大,這時候比較l1與k的大小選擇去左邊

還是右邊遞迴

*/class solution

swap(nums[l1],nums[pos]);

if(l1 == k)

else if(l1 > k) qsort(nums,l,l1-1,k);

else qsort(nums,l1+1,r,k);

}int findkthlargest(vector& nums, int k)

};

void qsort(int num,int l,int r)

swap(num[l1],num[p]);//替換基準點

qsort(num,l,p-1);

qsort(num,p+1,r);

}

LeetCode 215 陣列中的第K個最大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5 示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4 說明 你可以假設 k 總是有效的,且 1...

LeetCode 215 陣列中的第K個最大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5 示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4 說明 你可以假設 k 總是有效的,且 1...

Leetcode215 陣列中的第K個最大元素

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。示例 1 輸入 3,2,1,5,6,4 和 k 2 輸出 5 示例 2 輸入 3,2,3,1,2,4,5,5,6 和 k 4 輸出 4 說明 你可以假設 k 總是有效的,且 1...