lambda表达式
sort函数使用lambda表达式
priority_queue使用lambda表达式
求数组中第K个最大元素 最小堆1
2
3
4
5
6
7
8
9
10
11
12
13class Solution {
public:
int findKthLargest(vector<int>& nums, int k) {
int n = nums.size();
auto cmp=[](int a,int b){return a>b;};
priority_queue<int,vector<int>,decltype(cmp)> pq(cmp);
for(int i = 0; i < n; i ++){
if(pq.size()<k){pq.push(nums[i]);}
else if(pq.top()<nums[i]){pq.pop();pq.push(nums[i]);}
}
return pq.top();
}
};
求数组中第K大的元素 最大堆1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20class KthLargest {
private:
int k;
priority_queue<int,vector<int>,greater<int>> pq;
public:
KthLargest(int k, vector<int>& nums) {
this->k = k;
int n = nums.size();
for(int i = 0; i < n; i ++){
if(pq.size()<k){pq.push(nums[i]);}
else if(pq.top()<nums[i]){pq.pop();pq.push(nums[i]);}
}
}
int add(int val) {
if(pq.size()<this->k){pq.push(val);}
else if(pq.top()<val){pq.pop();pq.push(val);}
return pq.top();
}
};
1 | class KthLargest { |