LintCode-5.第k大元素

题目

描述

在数组中找到第k大的元素

样例

给出数组 [9,3,2,4,8],第三大的元素是 4

给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推

解答

思路

  1. 快速排序
  2. 返回倒数第k个元素

代码

class Solution {
    /*
     * @param k : description of k
     * @param nums : array of nums
     * @return: description of return
     */
    public int kthLargestElement(int k, int[] nums) {
        // write your code here
        quickSort(nums,0, nums.length-1);
        return nums[nums.length-k];
    }
    
    private void quickSort(int[] nums, int start, int end){
        if(start > end){
            return;
        }
        int i = start,j = end;
        int temp = nums[i];
        boolean flag = true;
        while(i != j){
            while(nums[j]>=temp && i<j) j--;
            while(nums[i]<=temp && i<j) i++;
            if(i<j) swap(nums,i,j);
        }
        nums[start]=nums[i];nums[i]=temp;
        quickSort(nums, start, i-1);
        quickSort(nums, i+1, end);
    }
    
    private void swap(int[] nums, int i, int j){
        int temp;
        temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • 描述 在数组中找到第k大的元素 注意事项 你可以交换数组中的元素的位置 样例 给出数组 [9,3,2,4,8],第...
    6默默Welsh阅读 304评论 0 0
  • 3.10 69.给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 二叉树的层次遍历样例给一棵二叉树 {3...
    mytac阅读 1,097评论 3 3
  • “你有过窒息的感觉吗?” 一只肥胖的狸猫蹲坐在玻璃门那里,声音像是从一张旧磁带里顺着耳机跑出来的一样。而他的听众,...
    _苏_三阅读 387评论 0 0
  • 以下讨论部分据理不足,旨在抛砖引玉,诱发思考,求喷。 互联网生而颠覆; 90年代初出现的搜索业务颠覆了信息获取的途...
    bellchen阅读 486评论 0 2