题解 | #寻找第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

相关推荐

不愿透露姓名的神秘牛友
06-27 20:55
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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