美文网首页
【算法】第K大的数(Java)

【算法】第K大的数(Java)

作者: 尼古拉斯小韭菜 | 来源:发表于2021-12-15 15:31 被阅读0次

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

public int findKthLargest(int[] nums, int k) {
int start = 0;
int end = nums.length -1;
int index = partition(nums, start, end);
int target = nums.length - k;
while(index != target){
   if(index < target){
          start = index + 1;
          index = partition(nums, start, end);
      } else {
          end = index - 1;
          index = partition(nums, start, end);
     }
}
return nums[target];
}
public int partition(int[] nums, int start, int end){
        int point= nums[start];
        int i = start;
        for (int j = start + 1; j <= end; j++) {
            if (nums[j] < point) {
                // j 的初值为 left,先右移,再交换,小于 pivot 的元素都被交换到前面
                i++;
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
            }
        }
        int temp2 = nums[i];
        nums[i] = nums[start];
        nums[start] = temp2;
        return i;
    }

相关文章

网友评论

      本文标题:【算法】第K大的数(Java)

      本文链接:https://www.haomeiwen.com/subject/cjlpfrtx.html