Problem: 1333. 餐厅过滤器
思路
这道题目拿到手基本可以确定是一道大模拟题,基本思路在题目里面已经确定,主要的难点就在对结果的排序上,需要指定sort的排序规则
解题方法
首先对题目中给出的数组依照题目要求的过滤器规则进行遍历过滤,然后形成一个过滤后的新数组filtered
,接着按照题目要求编写排序规则,即先按照rating
从高到低进行排序,相同情况下再按照id
从高到低排序,最后将排序后数组返回即可
Code
class Solution {
public:
vector<int> filterRestaurants(vector<vector<int>>& restaurants, int veganFriendly, int maxPrice, int maxDistance) {
vector<vector<int>> filtered;
int size = restaurants.size();
for(int i=0;i<size;i++)
{
if(restaurants[i][3] <= maxPrice && restaurants[i][4] <= maxDistance && !(veganFriendly && !restaurants[i][2])){
filtered.push_back(restaurants[i]);
}
}
sort(filtered.begin(), filtered.end(), [](vector<int> &v1, vector<int> &v2) -> bool{
return v1[1] > v2[1] || (v1[1]==v2[1] && v1[0] > v2[0]);
});
vector<int> ans;
for(auto &value:filtered){
ans.push_back(value[0]);
}
return ans;
}
};
标签:题目,int,1333,v1,v2,vector,过滤器,排序,LeetCode
From: https://blog.51cto.com/u_15567308/7629106