zoukankan      html  css  js  c++  java
  • Java for LeetCode 215 Kth Largest Element in an Array

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.

    For example,
    Given [3,2,1,5,6,4] and k = 2, return 5.

    解题思路:

    本题是《算法导论》原题,9.2节用归并的思路给出了时间复杂度为O(n)的算法,9.3节给出了最坏时间为O(n)的算法(就是讨论区的第一个),实现起来比较麻烦(笔者提交Wrong Answer了几次,不想搞了),本题最简单的快排即可实现,JAVA实现如下:

        public int findKthLargest(int[] nums, int k) {
            Arrays.sort(nums);
            return nums[nums.length-k];
        }
    

     另外,网上看人用归并排序,传送如下:

        public int findKthLargest(int[] nums, int k) {
            return findK(nums, nums.length-k, 0, nums.length-1);
        }
        
        private int findK(int[] nums, int k, int i, int j) {
            if(i>=j) return nums[i];
            int m = partition(nums, i, j);
            if(m==k) return nums[m];
            else if(m<k) {
                return findK(nums, k, m+1, j);
            } else {
                return findK(nums, k, i, m-1);
            }
        }
        
        private int partition(int[] nums, int i, int j) {
            int x = nums[i];
            int m = i;
            int n = i+1;
            
            while(n<=j){
                if(nums[n]<x) {
                    swap(nums, ++m, n);
                }
                ++n;
            }
            swap(nums,i, m);
            return m;
        }
        
        private void swap(int[] nums, int i, int j) {
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
    
  • 相关阅读:
    [转]如何分析监控的关键指标
    性能测试指标&说明 [解释的灰常清楚哦!!]
    页面性能测试&提升方式
    转:使用 JMeter 完成常用的压力测试
    细雨学习笔记:JMeter 的主要测试组件总结
    压力测试了解
    影响性能的因素
    网址收藏
    Windows安装TensorFlow
    ionic常见问题及解决方案
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4564601.html
Copyright © 2011-2022 走看看