JAVA练习80-数组中的第K个最大元素

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、题目-数组中的第K个最大元素

1.题目描述

2.思路与代码

2.1 思路

2.2 代码

总结


前言

提示:这里可以添加本文要记录的大概内容:

3月16日练习内容


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目-数组中的第K个最大元素

1.题目描述

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

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

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

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

示例 2:

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

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

2.思路与代码

2.1 思路

1.方法1可以利用java内置排序算法对数组进行排序

2.将排完序的第length - k个数组输出

3.第2个方法可以利用最小堆

4.将数据放入最小堆,当数组里面的数据个数大于k时,输出元素即可

2.2 代码

代码如下(示例):

class Solution {
    public int findKthLargest(int[] nums, int k) {
        
        //第一种方法
        //直接调用内置Api对数组进行排序
        Arrays.sort(nums);

        //输入数组第k个元素
        return nums[nums.length - k];


        // //第二种方法,利用最小堆
        // PriorityQueue queue = new PriorityQueue<>();

        // //将数据放入最小堆
        // for(int num : nums){
        //     queue.add(num);

        //     if(queue.size() > k){
        //         queue.poll();
        //         //出队列
        //     }
        // }

        // //输出
        // return queue.peek();

    }
}

总结

提示:这里对文章进行总结:
 

你可能感兴趣的:(java,数据结构,leetcode)