在未排序的数组中找到第 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 ≤ 数组的长度。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给了一个没排序的数组,让我排序后,找到第k大的元素。
(1)利用C的快排,降序排列
(2)返回数组的第k-1个下标的元素
快排的解释: qsort(a, n, sizeof(int), cmp);
1 待排序数组,排序之后的结果仍放在这个数组中 2 数组中待排序元素数量 3 各元素的占用空间大小(单位为字节) 4 指向函数的指针,排序规则
int cmp(const void *a, const void *b) { return *(int*)b - *(int*)a; // 逆序 } ---------------------------------------------------------- int cmp(const void* a , const void* b) //参数格式固定----升序 { int* a1 = (int*)a; //强制类型转换 int* b1 = (int*)b; return *a1 - *b1; }详细解释关注 B站 【C语言全代码】学渣带你刷Leetcode 不走丢 https://www.bilibili.com/video/BV1C7411y7gB