在未排序的陣列中找到第 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 ≤ k ≤ 陣列的長度。
//氣泡排序
void
swap
(int
*a,int
*b)int
findkthlargest
(int
* nums,
int numssize,
int k)}}
return nums[k-1]
;}
//2021-04-19
class
solution
int count =0;
for(
auto n = mp.
begin()
; n != mp.
end();
++n)
count +
= n-
>second;
}return-1
;}};
借助快速排序的劃分思想,每一趟劃分,確定乙個元素在陣列中的有序的固定的位置。此時,若此位置就是題目要求的序號的元素,那麼
直接返回即可。
如不是,如果此位置左邊的元素的個數》=k,則此,那麼要求的元素一定落在左邊,否則就落在右邊,按照這個規則最終可得到題目要求的元
素,此時返回即可。
int
parttion
(int
*g,int left,
int right)
g[left]
= g[right]
;while
(left < right && g[left]
<= key)
g[right]
= g[left];}
g[left]
= key;
return left;
}int
findkthlargest
(int
* nums,
int numssize,
int k)
else
}return nums[seq-1]
;}
力扣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...
力扣215 陣列中的第K個最大元素
在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。暴力解法 class solution def findkthlargest self,nums,k nums sorted nums,reverse true return ...
力扣第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 思路1 首先將陣列從大到小排序,再根據k值獲...