https://leetcode.com/problems/sort-array-by-increasing-frequency/
在這個leetcode問題中,我寫了以下代碼:
class Solution {
public:
bool compare(pair<int,int>p1,pair<int,int>p2)
{
if(p1.second<p2.second)
return true;
else if(p1.second==p2.second)
{
if(p1.first>p2.first)
return true;
else
return false;
}
else
return false;
}
vector<int> frequencySort(vector<int>& nums) {
vector<int>final(nums.size());int k=0;map<int,int>mpp;
for(int i=0;i<nums.size();i )
{
mpp[nums[i]] ;
}
sort(mpp.begin(),mpp.end(),compare);
for(auto it:mpp)
{
while(it.second)
{
final[k ]=it.first;
it.second--;
}
}
return final;
}
};
這給了我以下錯誤:
Line 23: Char 36: error: reference to non-static member function must be called
sort(mpp.begin(),mpp.end(),compare);
^~~~~~~
有人可以指出錯誤嗎?(PS:我是面向物件編程的新手)
uj5u.com熱心網友回復:
在 C 中,即使您使用自定義比較器,也無法對地圖進行排序。
uj5u.com熱心網友回復:
作為一種解決方法,您可以將map's 對轉儲到std::vector<std::pair<int,int>>第一個:
std::vector<std::pair<int,int>> intermediate(mpp.begin(), mpp.end());
std::sort(begin(intermediate), end(intermediate), compare);
然后走路intermediate。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/317131.html
