• LeetCode每日一题:1333. 餐厅过滤器(2023.9.27 C++)


    目录

    1333. 餐厅过滤器

    题目描述:

    实现代码与解析:

    模拟

    原理思路:


    1333. 餐厅过滤器

    题目描述:

            给你一个餐馆信息数组 restaurants,其中  restaurants[i] = [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。

    其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果为 true 就意味着你应该只包括 veganFriendlyi 为 true 的餐馆,为 false 则意味着可以包括任何餐馆。此外,我们还有最大价格 maxPrice 和最大距离 maxDistance 两个过滤器,它们分别考虑餐厅的价格因素和距离因素的最大值

    过滤后返回餐馆的 id,按照 rating 从高到低排序。如果 rating 相同,那么按 id 从高到低排序。简单起见, veganFriendlyi 和 veganFriendly 为 true 时取值为 1,为 false 时,取值为 0 。

    示例 1:

    输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 1, maxPrice = 50, maxDistance = 10
    输出:[3,1,5] 
    解释: 
    这些餐馆为:
    餐馆 1 [id=1, rating=4, veganFriendly=1, price=40, distance=10]
    餐馆 2 [id=2, rating=8, veganFriendly=0, price=50, distance=5]
    餐馆 3 [id=3, rating=8, veganFriendly=1, price=30, distance=4]
    餐馆 4 [id=4, rating=10, veganFriendly=0, price=10, distance=3]
    餐馆 5 [id=5, rating=1, veganFriendly=1, price=15, distance=1] 
    在按照 veganFriendly = 1, maxPrice = 50 和 maxDistance = 10 进行过滤后,我们得到了餐馆 3, 餐馆 1 和 餐馆 5(按评分从高到低排序)。 
    

    示例 2:

    输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 0, maxPrice = 50, maxDistance = 10
    输出:[4,3,2,1,5]
    解释:餐馆与示例 1 相同,但在 veganFriendly = 0 的过滤条件下,应该考虑所有餐馆。
    

    示例 3:

    输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 0, maxPrice = 30, maxDistance = 3
    输出:[4,5]
    

    提示:

    • 1 <= restaurants.length <= 10^4
    • restaurants[i].length == 5
    • 1 <= idi, ratingi, pricei, distancei <= 10^5
    • 1 <= maxPrice, maxDistance <= 10^5
    • veganFriendlyi 和 veganFriendly 的值为 0 或 1 。
    • 所有 idi 各不相同。

    实现代码与解析:

    模拟

    1. class Solution {
    2. public:
    3. static bool cmp(vector<int> a, vector<int> b)
    4. {
    5. if (a[1] < b[1]) return false;
    6. else if (a[1] > b[1]) return true;
    7. else {
    8. if (a[0] < b[0]) return false;
    9. else return true;
    10. }
    11. }
    12. vector<int> filterRestaurants(vectorint>>& restaurants, int veganFriendly, int maxPrice, int maxDistance) {
    13. vectorint>> temp;
    14. vector<int> res;
    15. if (veganFriendly) {
    16. for (auto t:restaurants) {
    17. if (t[2] && t[3] <= maxPrice && t[4] <= maxDistance) temp.push_back(t);
    18. }
    19. } else {
    20. for (auto t:restaurants) {
    21. if (t[3] <= maxPrice && t[4] <= maxDistance) temp.push_back(t);
    22. }
    23. }
    24. sort(temp.begin(), temp.end(), cmp);
    25. for (auto t: temp) {
    26. res.push_back(t[0]);
    27. }
    28. return res;;
    29. }
    30. };

    原理思路:

            简单题,有些地方可以写的更简约一些。

  • 相关阅读:
    大一新生HTML期末作业 个人网页王嘉尔明星介绍网页设计与制作
    《最新出炉》系列初窥篇-Python+Playwright自动化测试-25-处理单选和多选按钮-中篇
    英飞凌Tricore原理及应用介绍06_系统定时器(STM)模块详解
    从零开始学React--JSX
    mybatis注解
    攒机笔记二十三:触控商务本
    高亲和力丨艾美捷DetergentOUT GB-S10去垢剂研究
    格式优雅的表单标签
    SQL语句的约束 总结
    最新版本 Stable Diffusion 开源 AI 绘画工具之图生图进阶篇
  • 原文地址:https://blog.csdn.net/Cosmoshhhyyy/article/details/133355722