• 力扣(LeetCode)1333. 餐厅过滤器(C++)


    优先队列

    请读者读题,应该会发现两个重点:过滤器排序。大家有没有发现这个效果,有点像xx点评: 大家选店一般在口味/距离/价格能接受的前提下,选评分最高的那家店hh,这就是过滤器的效果。排序是说,对满足心理预期的店子,按 rating 从高到低排序,店子的rating 相同时,按照 id 从高到低排序。

    算法流程

    • 维护优先队列(大根堆),存放 {rating, id} !!
    • 正序遍历 restaurant ,设置过滤器(条件语句)跳过不符合要求的店子,如果店子符合要求,则向优先队列存入当前店子的 {rating, id}
    • 遍历结束,优先队列存放店子的顺序就是答案:

    过滤器筛选过的店子,按 rating 从高到低排序,店子的rating 相同时,按照 id 从高到低排序。

    class Solution {
    public:
        vector<int> filterRestaurants(vector<vector<int>>& restaurants, int veganFriendly, int maxPrice, int maxDistance) {
            priority_queue<pair<int, int>> pq;
            for (vector<int> &restaurant : restaurants) {
                int id = restaurant[0], rating = restaurant[1], veganF = restaurant[2], price = restaurant[3];
                int distance = restaurant[4];
                if (veganFriendly){
                    if (!veganF) continue;
                }
                if (price > maxPrice || distance > maxDistance) continue;
                pq.push({rating, id});
            }
            vector<int> ans;
            while (pq.size()) {
                ans.push_back(pq.top().second);
                pq.pop();
            }
            return ans;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn) : n n n 是餐厅数量( r e s t a u r a n t s . s i z e ( ) restaurants.size() restaurants.size()),遍历 r e s t a u r a n t restaurant restaurant 同时维护优先队列的时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)
    空间复杂度 O ( n ) O(n) O(n) : 优先队列 p q pq pq 的最坏空间复杂度 O ( n ) O(n) O(n)

    AC

    ac

    致语
    • 理解思路很重要
    • 读者有问题请留言,清墨看到就会回复的。
  • 相关阅读:
    python+vue+elementui在线打印系统
    杭州跨境电商政策支持
    移远4G模块调试笔记
    【数据库系统概论】第四章数据库安全性
    Vulnhub系列靶机-THM-ContainMe-v4
    IO多路复用
    【AI视野·今日NLP 自然语言处理论文速览 第八十二期】Tue, 5 Mar 2024
    爬虫案例实战
    训练神经网络的各种优化算法【文末赠书】
    uni-app_01
  • 原文地址:https://blog.csdn.net/Innocence02/article/details/133343136