题解 | #寻找第K大#

寻找第K大

http://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf

import java.util.*;

public class Solution {
    public int findKth(int[] a, int n, int K) {
        // write code here
        for(int gap = a.length/2;gap>0;gap/=2){
            for(int i = gap ; i<a.length;i++){
                int j = i;
                int temp = a[j];
                if(a[j]>a[j-gap]){
                    while(j-gap>=0&&temp>a[j-gap]){
                        a[j]=a[j-gap];
                        j-=gap;
                    }
                    a[j]=temp;
                }
            }
        }
        int count = 0 ;
        for(int h =0;h<a.length;h++){
            if(a[h]!=K){
                count++;
            }
            if(count == K){
                return a[h];
            }
        }
        return 0;
    }
}
全部评论
这是我能想到最笨的办法,先用希尔排序排好从大到小的顺序,然后记录拿count记录第k大的值,最后返回数组对应的值!
点赞 回复 分享
发布于 2021-09-24 22:09

相关推荐

10-13 16:58
门头沟学院 Java
面了100年面试不知...:一周七天,一天去一家上班😍😍😍
点赞 评论 收藏
分享
用微笑面对困难:这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务