大顶堆与小顶堆
是在是忍无可忍了,自定义大顶堆小顶堆的排序规则的时候,总是搞混大于小于;这里记录一下;
大顶堆
//写法1
//大顶堆规则,切记参数2大的时候为大根堆
bool cmp(int n1,int n2)
{
return n2>n1;
}
priority_queue<int,vector<int>,decltype(&cmp)> que(cmp);
//写法2
priority_queue<int> que;//默认构造大根堆
//写法3
priority_queue<int, vector<int>, less<int>> que;
小顶堆
//写法1
//大顶堆规则,切记参数1大的时候为小根堆
bool cmp(int n1,int n2)
{
return n1>n2;
}
priority_queue<int,vector<int>,decltype(&cmp)> que(cmp);
//写法3
priority_queue<int, vector<int>, greater<int>> que;
自定义sort排序规则
一个二维数组,形状为[N,M],使用sort完成按照第二列升序排序
vector<vector<int>> nums;
sort(nums.begin(),nums.end(),[](const auto& v1,const auto& v2)
{
return v2[1] > v1[1];
})