zoukankan      html  css  js  c++  java
  • 【leetcode】215. 数组中的第K个最大元素

    inline int partition(int* a, int l, int r) {
        int x = a[r], i = l - 1;
        for (int j = l; j < r; ++j) {
            if (a[j] <= x) {
                int t = a[++i];
                a[i] = a[j], a[j] = t;
            }
        }
        int t = a[i + 1];
        a[i + 1] = a[r], a[r] = t;
        return i + 1;
    }
    
    inline int randomPartition(int* a, int l, int r) {
        int i = rand() % (r - l + 1) + l;
        int t = a[i];
        a[i] = a[r], a[r] = t;
        return partition(a, l, r);
    }
    
    int quickSelect(int* a, int l, int r, int index) {
        int q = randomPartition(a, l, r);
        if (q == index) {
            return a[q];
        } else {
            return q < index ? quickSelect(a, q + 1, r, index)
                             : quickSelect(a, l, q - 1, index);
        }
    }
    
    int findKthLargest(int* nums, int numsSize, int k) {
        srand(time(0));
        return quickSelect(nums, 0, numsSize - 1, numsSize - k);
    }
  • 相关阅读:
    B/S 和 C/S
    SQL 注入
    软件测试
    Spring的注解方式
    测试开发题目
    策略模式
    设计模式
    单例模式
    读写文件
    对List里的对象元素进行排序
  • 原文地址:https://www.cnblogs.com/ganxiang/p/14199267.html
Copyright © 2011-2022 走看看