leetcode 215 Kth Largest Element in an Array
Posted hwd9654
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 215 Kth Largest Element in an Array相关的知识,希望对你有一定的参考价值。
用堆解
两种实现方法
1)最大堆,o(klogn)
直接将原数组建堆 o(n)
然后弹出k次 (klogn)
返回最后一次poll()的值
1 class Solution { 2 public int findKthLargest(int[] nums, int k) { 3 if(nums.length == 0) 4 return 0; 5 PriorityQueue<Integer> pq = new PriorityQueue<>(Comparator.reverseOrder()); 6 int res = 0; 7 for(int num : nums) 8 pq.offer(num); 9 10 while(k != 0){ 11 res = pq.poll(); 12 k--; 13 } 14 15 return res; 16 } 17 }
2)最小堆
用数组前k个数建堆 o(k)
剩下n-k,依次插入堆中然后推出堆顶元素o((n-k)logk)
剩下的k个肯定是前k大的数,只要返回此时堆顶即可
以上是关于leetcode 215 Kth Largest Element in an Array的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode OJ 215. Kth Largest Element in an Array 堆排序求解
LN : leetcode 215 Kth Largest Element in an Array
[LeetCode] 215. Kth Largest Element in an Array
leetcode 215. Kth Largest Element in an Array