解题思路:
筛选 + 排序(过滤后返回餐馆的 id,按照 rating 从高到低排序。如果 rating 相同,那么按 id 从高到低排序)
class Solution {
public:
//过滤后返回餐馆的 id,按照 rating 从高到低排序。如果 rating 相同,那么按 id 从高到低排序
static bool comp(pair<int ,int> x , pair<int ,int> y)
{
if(x.second != y.second)
return x.second > y.second ;
return x.first > y.first;
}
vector<int> filterRestaurants(vector<vector<int>>& restaurants, int veganFriendly, int maxPrice, int maxDistance)
{
int sz = restaurants.size();
vector<pair<int ,int>> vp;
for(int i = 0 ; i < sz ;++i)
{
if(restaurants[i][2] < veganFriendly // 妙
|| restaurants[i][3] > maxPrice
|| restaurants[i][4] > maxDistance)
continue; //不满足条件滤过
vp.push_back(make_pair(restaurants[i][0] , restaurants[i][1]));
}
sort(vp.begin() , vp.end() , comp); //排序
vector<int> ans;
for(pair<int,int>& e : vp)
{
ans.push_back(e.first);
}
return ans;
}
};