题目描述
创建一个大顶堆,保存k个元素,遍历数组,如果当前元素比堆顶元素小,那么就把元素放进去,然后把堆顶元素pop掉,保证堆里保存k个最小的元素。
样例
class Solution {
public:
vector<int> getLeastNumbers_Solution(vector<int> input, int k) {
//创建一个大顶堆,保存k个元素,如果元素比堆顶小,那么就把元素放进去,把堆顶干掉
priority_queue <int> heap;
for(auto x : input) {
heap.push(x);
if (heap.size() > k) heap.pop();
}
vector<int> res;
while(heap.size()) {
res.push_back(heap.top());
heap.pop();
}
reverse(res.begin(), res.end());
return res;
}
};
这个时间复杂度是多少啊
class Solution(object):
def getLeastNumbers_Solution(self, input, k):
“”“
:type input: list[int]
:type k: int
:rtype: list[int]
“”“
import heapq
return heapq.nsmallest(k, input)
两行的开挂python 。。。hhhh
厉害。
通过不了欸