寻找第K大
发布日期:2021-05-11 02:22:36 浏览次数:12 分类:精选文章

本文共 2498 字,大约阅读时间需要 8 分钟。

������������������������K������������������������������������������������������������������������������������������������������������

���������������������

  • ������������������������������������������������������������������������K������������������������������������������������������������������K���������1���������������n���������

  • ���������������������������������������������������������������������������������������K���������������������������������������������

  • ���������������

    • ���������low���high������������������������������������
    • ������������������������������������������������
    • ���������������������K������������������������������K���������������������������������������������������������
    • ���������������������������low���high������������K���������������K���������������������������
  • ������������������low������high������������������������������������������������������������������������������������������������K������������

  • ���������������

    class Solution {    public int findKthLargest(int[] nums, int k) {        if (nums == null || nums.length == 0) {            return -1;        }        int low = 0;        int high = nums.length - 1;        return findKth(nums, low, high, k);    }    public int findKth(int[] a, int low, int high, int k) {        int part = partition(a, low, high);        if (k == part - low + 1) {            return a[part];        } else if (k > part - low + 1) {            return findKth(a, part + 1, high, k - (part - part + 1));        } else {            return findKth(a, low, part - 1, k);        }    }    public int partition(int[] a, int low, int high) {        int key = a[low];        while (low < high) {            while (low < high && a[high] <= key) {                high--;            }            if (low == high) break;            a[low] = a[high];            while (low < high && a[low] >= key) {                low++;            }            a[high] = a[low];        }        a[low] = key;        return low;    }}

    ������������

    • findKthLargest���������������������������������������������������������������low���high������
    • findKth���������������������������������K������������������������������������������������K������������������k���������������������������������
    • partition���������������������������������������������������������������������������������������������������

    ������

    ������������������������������������������������������������O(n)������������������������������������������������������������������������������������������������

    上一篇:每日一题:day1
    下一篇:统计回文

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月17日 05时19分40秒