Method 1:
class Solution {
public:
vector<int> filterRestaurants(vector<vector<int>>& restaurants, int veganFriendly, int maxPrice, int maxDistance) {
int size=restaurants.size();
vector<vector<int>>res;
for(int i=0;i<size;i++)
{
if((veganFriendly==1&&restaurants[i][2]==0)||restaurants[i][3]>maxPrice||restaurants[i][4]>maxDistance)
{
continue;
}
res.push_back(restaurants[i]);
}
sort(res.begin(),res.end(),[](const auto& a,const auto& b){
return (a[1]>b[1])||(a[1]==b[1]&&a[0]>b[0]);
});
size=res.size();
vector<int>ans;
for(int i=0;i<size;i++){
ans.push_back(res[i][0]);
}
return ans;
}
};
Method 2:
class Solution {
public:
static bool cmp(const vector<int>&a,const vector<int>&b){
return a[1]>b[1]||(a[1]==b[1]&&a[0]>b[0]);
}
vector<int> filterRestaurants(vector<vector<int>>& restaurants, int veganFriendly, int maxPrice, int maxDistance) {
int size=restaurants.size();
vector<vector<int>>res;
for(int i=0;i<size;i++)
{
if((veganFriendly==1&&restaurants[i][2]==0)||restaurants[i][3]>maxPrice||restaurants[i][4]>maxDistance)
{
continue;
}
res.push_back(restaurants[i]);
}
sort(res.begin(),res.end(),cmp);
size=res.size();
vector<int>ans;
for(int i=0;i<size;i++){
ans.push_back(res[i][0]);
}
return ans;
}
};
其中,方法1耗时更少,因为少一个调用函数过程
tips:sort为全局函数,其调用的cmp函数需声明为static(静态~=全局)否则报错