leet215:数组中的第K个最大元素

 public int findKthLargest(int[] nums, int k) {//2ms
         Arrays.sort(nums);
        if(k <=0 || k>nums.length)
            return -1;
        return nums[nums.length-k];
    }

PriorityQueue默认实现小顶堆

 public int findKthLargest(int[] nums, int k) {//9ms
      PriorityQueue<Integer> heap = new PriorityQueue<>((n1,n2)->n1-n2);
        for (int num:nums){
            heap.add(num);
            if(heap.size()>k){
                heap.poll();
            }
        }
        return heap.poll();
    }
public static int findKthSmallest(int[] nums, int k) {
    PriorityQueue<Integer> heap = new PriorityQueue<>((n1,n2)->n2-n1);
    //PriorityQueue heap = new PriorityQueue<>();
    for (int num:nums){
        heap.add(num);
        if(heap.size()>k){
            heap.poll();
        }
    }
    return heap.poll();
}

你可能感兴趣的:(leet堆)