kth 概述

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kth 概述相关的知识,希望对你有一定的参考价值。

kth既是寻找未排序数组中第k大的数

1. 排序法

将数组排序后,返回第k个元素。

. 复杂度
时间 O(NlogN)
空间 O(1)

2. 优先队列

遍历数组时将数字加入优先队列(堆),一旦堆的大小大于k就将堆顶元素去除,确保堆的大小为k。遍历完后堆顶就是返回值。

. 复杂度
时间 O(NlogK)
空间 O(K)

int findKthLargest(int a[], int nSize, int k)
 
    // Creating a min-heap using priority queue
    priority_queue<int, vector<int>, greater<int> > q;

    for (int i = 0; i < nSize; i++) 
        q.push(a[i]);
        if (q.size() > k)
            q.pop();
    
    return q.top();


void test() 
    int a[] =  1, 4, 5, 2, 10, 8 ;
    int aSize = sizeof(a) / sizeof(int); 
    int k = findKthLargest(a, aSize, 3);
    std::cout << "end" << std::endl;


【引用】

[1] 代码kth.h

以上是关于kth 概述的主要内容,如果未能解决你的问题,请参考以下文章

无法定位序数3440于动态连接库

VS2017里使用mysql出现错误,无法定位序数3283...

3位反序数

电脑老是出现“无法定位序数4445于动态链接库”,是怎么回事儿?

JAVA语法——3为反序数

703. Kth Largest Element in a Stream/215. Kth Largest Element in an Array/