LeetCode-215-数组中的第K个最大元素

createh55个月前 (02-01)技术教程47

数组中的第K个最大元素

题目描述:给定整数数组 nums 和整数 k,请返回数组中第 **k** 个最大的元素。

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

示例说明请见LeetCode官网。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法一:数组排序

这里首先考虑的是将原数组排序,从排序后的数组中就可以直接得到第k大的元素,所以具体处理过程如下:

首先使用排序算法对该数组排序,排序算法有各种,比如冒泡排序、快速排序、归并排序等等,这里直接使用了java的库函数对数组进行排序,是偷懒的做法;

然后根据排序后的数组索引,直接可以获取到第K大的元素,并返回之。

import java.util.Arrays;

public class LeetCode_215 {
    /**
     * 数组排序:首先使用排序算法对该数组排序,然后直接获取第K大的元素返回即可
     *
     * @param nums 原数组
     * @param k 期望的第K大
     * @return
     */
    public static int findKthLargest(int[] nums, int k) {
        // 排序算法有各种,这里直接使用了java的库函数进行排序
        Arrays.sort(nums);
        // 排序后,直接返回第K大的元素
        return nums[nums.length - k];
    }

    public static void main(String[] args) {
        int[] nums = new int[]{3, 2, 1, 5, 6, 4};
        // 测试用例,期望输出: 5
        System.out.println(findKthLargest(nums, 2));
    }
}

【每日寄语】 缺乏鲜花与掌声的演艺事业寂寞吗?是的。但如果一直相信并坚持的话,就会默默地积蓄力量–就像爬山,跋涉前行。扛着一路冷清,寻找自我价值的回归。每个人都有一座或几座山峰,需要不断征服和超越。



相关文章

算法:有序数组的平方(Java版)(java 有序数组)

有序数组的平方题目描述:给定一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例:输入: nums = [-4,-1,0,3,10] 输出: [0,1...

全新Java入门到架构师教程之Java15数组案例实现和Arrays

上篇文章写了《全新Java入门到架构师课程之Java15编程基础-数组(1):数组声明、初始化、数组元素的界限和遍历》,这次将接下去说java15编程之数组案例实现和Arrays一、数组基本练习//A...

学习笔记之C#基础——数组和集合(c#数组三种形式)

学习笔记之C#基础——数组和集合 数组是大部分编程语言中都支持的一种数据类型,无论是C语言、C++、C#还是Java。数组是最为常见的一种数据结构,是相同类型的、用一个标识符封装到一起的基本类型数据序...

Java二维数组绝妙练习题—杨辉三角

问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:11 11 2 1  ...

java二维数组(java二维数组的行数和列数)

二维数组其实就是数组中的数组什么是数组中的数组,首先一维数组开辟了3格,但是3格在往下延伸了3格,就是我们的数组里面存储的并不是值,而是下一个数组的地址,等于就是数组中的数组,这就是二维数组的形式。如...

100个Java工具类之77:数组操作的可靠助手ArrayUtils和Arrays

众所周知,数组操作是比较复杂的,而ArrayUtils就是为了为简化数组操作而生的,它在数组查找、排序、合并等方面提供了多种方法,合理使用,可以让代码看起来更简洁易用,下面通过几个实例来对其进行介绍。...