题解 | #寻找第K大#

寻找第K大

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

//快排思想
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a int整型一维数组
     * @param n int整型
     * @param K int整型
     * @return int整型
     */
    public int findKth (int[] a, int n, int K) {
        // write code here
        ArrayList<Integer> al = new ArrayList<>();
        for(int num : a){
            al.add(num);
        }

        quicksort(al, 0, al.size() - 1);
        int result = al.get(a.length - K);
        return result;
    }
    public void quicksort(ArrayList<Integer> al, int start, int end) {
        if (start < end) {
            int index = qsort(al, start, end);
            quicksort(al, start, index - 1);
            quicksort(al, index + 1, end);
        }
    }
    public int qsort(ArrayList<Integer> al, int start, int end) {
        int point = al.get(end);
        int i = start;

        for (int j = start; j < end; j++) {
            if (al.get(j) <= point) {
                Collections.swap(al, j, i);
                i++;
            }
        }
        Collections.swap(al, end, i);
        return i;
    }
}

全部评论

相关推荐

雪飒:我也遇见过,我反问他有考虑来华为od吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务