给定整数数组 nums 和整数 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. // 方法1:快排
    2. func findKthLargest(nums []int, k int) int {
    3. quickSort(nums,0,len(nums)-1)
    4. return nums[len(nums)-k]
    5. }
    6. func quickSort(nums []int,left,right int){
    7. if left > right {
    8. return
    9. }
    10. l,r,privot := left,right,nums[left]
    11. for l < r {
    12. for l < r && nums[r] > privot{
    13. r--
    14. }
    15. for l < r && nums[l] <= privot {
    16. l++
    17. }
    18. nums[l],nums[r] = nums[r],nums[l]
    19. }
    20. nums[left],nums[l] = nums[l],nums[left]
    21. quickSort(nums,left,l-1)
    22. quickSort(nums,l+1,right)
    23. }
    24. // 方法2:快排的优化
    25. func findKthLargest(nums []int, k int) int {
    26. TopKSplit(nums, len(nums)-k, 0, len(nums)-1)
    27. return nums[len(nums)-k]
    28. }
    29. func Parition(nums []int, start, stop int)int{
    30. if start >= stop{
    31. return -1
    32. }
    33. pivot := nums[start]
    34. l, r := start, stop
    35. for l < r{
    36. for l < r && nums[r] >= pivot{
    37. r--
    38. }
    39. nums[l] = nums[r]
    40. for l < r && nums[l] < pivot{
    41. l++
    42. }
    43. nums[r] = nums[l]
    44. }
    45. // 循环结束,l与r相等
    46. // 确定基准元素pivot在数组中的位置
    47. nums[l] = pivot
    48. return l
    49. }
    50. func TopKSplit(nums []int, k, start, stop int){
    51. if start < stop{
    52. index := Parition(nums, start, stop)
    53. if index == k{
    54. return
    55. }else if index < k{
    56. TopKSplit(nums, k, index+1, stop)
    57. }else{
    58. TopKSplit(nums, k, start, index-1)
    59. }
    60. }
    61. }
    62. 作者:ybzdqhl
    63. 链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/solution/topklei-wen-ti-xiang-jie-by-ybzdqhl-w7lo/
    64. 来源:力扣(LeetCode
    65. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。