[MSTL] lc1418. 点菜展示表(模拟+哈希表)

Posted Ypuyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[MSTL] lc1418. 点菜展示表(模拟+哈希表)相关的知识,希望对你有一定的参考价值。

1. 题目来源

链接:1418. 点菜展示表

2. 题目解析

某次周赛的第二题,印象深刻。

本题最难的是要抽象如何将数据进行存储,由于需要使用字典序进行输出,那么就用了 map<> 省去了排序这个步骤。

具体思路看代码即可,现在做本题感觉轻松好多啊hh


时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
空间复杂度: O ( n ) O(n) O(n)


哈希表+模拟+STL

class Solution {
public:
    vector<vector<string>> displayTable(vector<vector<string>>& orders) {
        vector<vector<string>> res;
        map<int, map<string, int>> mmp;     // [餐桌, [菜, 菜的数量]]
        map<string, int> m;                 // [菜, 菜的数量]

        // 初始化 map,构建餐桌与菜的关系
        for (auto &e : orders) {
            string name = e[0];
            int table = stoi(e[1]);
            string food = e[2];

            m[food] ++ ;
            mmp[table][food] ++ ;
        }

        // 构建第一行
        vector<string> p;
        p.push_back("Table");
        for (auto &[k, v] : m) p.push_back(k);
        res.push_back(p);

        // 遍历每个餐桌,每个菜品,对应菜品数量
        for (auto &[table, mp] : mmp) {
            vector<string> t;
            t.push_back(to_string(table));
            for (auto &[food, cnt] : m)
                t.push_back(to_string(mp[food]));

            res.push_back(t);
        }

        return res;
    }
};

以上是关于[MSTL] lc1418. 点菜展示表(模拟+哈希表)的主要内容,如果未能解决你的问题,请参考以下文章

1418. 点菜展示表

文巾解题 1418. 点菜展示表

LeetCode 1418 点菜展示表[Map] HERODING的LeetCode之路

LeetCode 1418. 点菜展示表 / NC103 反转字符串 / NC33 合并有序链表 / NC61两数之和

[MSTL] lc面试题 10.02. 变位词组(哈希表+排序)

[MSTL] lc451. 根据字符出现频率排序(STL+哈希表)