0%

lambda表达式

lambda表达式

sort函数使用lambda表达式

priority_queue使用lambda表达式

求数组中第K个最大元素 最小堆

1
2
3
4
5
6
7
8
9
10
11
12
13
class 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
20
class 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class KthLargest {
struct cmp{
bool operator ()(int &x,int &y){
return x>y;
}
};
private:
int k;
priority_queue<int,vector<int>,KthLargest::cmp> 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();
}
};