力扣c語言實現 215 陣列中的第K個最大元素

2021-09-24 16:21:27 字數 1292 閱讀 2173

在未排序的陣列中找到第 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值獲...