数组中的第K个最大元素

    xiaoxiao2025-01-29  17

    Leecode刷题

    题目描述

    在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

    示例

    输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4

    代码一(自己实现的快速排序) //快速排序内部子表划分 void partition(vector<int> &a, int s, int t, int &cutpoint) { int x = a[s]; int i = s, j = t; while (i != j) { while (i < j&&a[j]>x) j--; if (i < j) { a[i] = a[j]; i++; } while (i < j&&a[i] < x) i++; if (i < j) { a[j] = a[i]; j--; } } a[i] = x; cutpoint = i; } //快速排序 void quick_sort(vector<int> &a, int s, int t) { int i; if (s < t) { partition(a, s, t, i=0); quick_sort(a, s, i-1); quick_sort(a, i + 1, t); } } class Solution { public: int findKthLargest(vector<int>& nums, int k) { quick_sort(nums,0,nums.size()-1); return nums[nums.size()-k]; } }; 代码二(调用库函数,且事实证明自己写的快排比起库函数是如此垃圾) class Solution { public: int findKthLargest(vector<int>& nums, int k) { sort(nums.begin(),nums.end()); return nums[nums.size()-k]; } };
    最新回复(0)