1. 题目

给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi] ,其中 customerNamei 是客户的姓名,tableNumberi 是客户所在餐桌的桌号,而 foodItemi 是客户点的餐品名称。

请你返回该餐厅的 点菜展示表
在这张表中,表中第一行为标题,其第一列为餐桌桌号 “Table” ,后面每一列都是按字母顺序排列的餐品名称。
接下来每一行中的项则表示每张餐桌订购的相应餐品数量,第一列应当填对应的桌号,后面依次填写下单的餐品数量。

注意:客户姓名不是点菜展示表的一部分。此外,表中的数据行应该按餐桌桌号升序排列。

示例 1:
输入:orders = [["David","3","Ceviche"],
["Corina","10","Beef Burrito"],
["David","3","Fried Chicken"],
["Carla","5","Water"],
["Carla","5","Ceviche"],
["Rous","3","Ceviche"]]
输出:
[["Table","Beef Burrito","Ceviche","Fried Chicken","Water"],
["3","0","2","1","0"],
["5","0","1","0","1"],
["10","1","0","0","0"]]
解释:
点菜展示表如下所示:
Table,Beef Burrito,Ceviche,Fried Chicken,Water
3    ,0           ,2      ,1            ,0
5    ,0           ,1      ,0            ,1
10   ,1           ,0      ,0            ,0
对于餐桌 3:David 点了 "Ceviche" 和 "Fried Chicken",而 Rous 点了 "Ceviche"
而餐桌 5:Carla 点了 "Water" 和 "Ceviche"
餐桌 10:Corina 点了 "Beef Burrito" 示例 2:
输入:orders = [["James","12","Fried Chicken"],
["Ratesh","12","Fried Chicken"],
["Amadeus","12","Fried Chicken"],
["Adam","1","Canadian Waffles"],
["Brianna","1","Canadian Waffles"]]
输出:
[["Table","Canadian Waffles","Fried Chicken"],
["1","2","0"],
["12","0","3"]]
解释:
对于餐桌 1:Adam 和 Brianna 都点了 "Canadian Waffles"
而餐桌 12:James, Ratesh 和 Amadeus 都点了 "Fried Chicken"示例 3:
输入:orders = [["Laura","2","Bean Burrito"],["Jhon","2","Beef Burrito"],["Melissa","2","Soda"]]
输出:[["Table","Bean Burrito","Beef Burrito","Soda"],["2","1","1","1"]]提示:
1 <= orders.length <= 5 * 10^4
orders[i].length == 3
1 <= customerNamei.length, foodItemi.length <= 20
customerNamei 和 foodItemi 由大小写英文字母及空格字符 ' ' 组成。
tableNumberi 是 1 到 500 范围内的整数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/display-table-of-food-orders-in-a-restaurant
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {public:vector<vector<string>> displayTable(vector<vector<string>>& orders) {unordered_map<string,map<string,int>> m;//桌号,菜,数量vector<vector<string>> food = {{"Table"}};//表头vector<string> tableId;//桌号for(auto& od : orders){m[od[1]][od[2]]++;tableId.push_back(od[1]);//桌号food[0].push_back(od[2]);//菜品}sort(tableId.begin(), tableId.end(),[&](auto a, auto b){if(a.size()==b.size())return a < b;return a.size() < b.size();});//桌号排序tableId.erase(unique(tableId.begin(),tableId.end()), tableId.end());//桌号去重sort(food[0].begin()+1, food[0].end());//菜品排序food[0].erase(unique(food[0].begin()+1, food[0].end()), food[0].end());//菜品去重food.resize(tableId.size()+1);//开辟空间for(int i = 1; i < food.size(); ++i){food[i].push_back(tableId[i-1]);//第一列,桌号for(int j = 1; j < food[0].size(); ++j)food[i].push_back(to_string(m[food[i][0]][food[0][j]]));//其余列数量}return food;}
};

984 ms 90.2 MB

LeetCode 1418. 点菜展示表(哈希map)相关推荐

  1. 1418. 点菜展示表

    给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi] ,其中 customerNamei ...

  2. 文巾解题 1418. 点菜展示表

    1 题目描述 2 解题思路 分几步走: 第一步:找到一共几张桌子,一共有几 class Solution(object):def displayTable(self, orders):"&q ...

  3. LeetCode - 点菜展示表

    题目链接:https://leetcode-cn.com/problems/display-table-of-food-orders-in-a-restaurant/ 题目描述 给你一个数组 orde ...

  4. 【数据结构与算法】之深入解析“点菜展示表”的求解思路与算法示例

    一.题目要求 给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说,orders[i]=[customerNamei,tableNumberi,foodItemi],其中 customer ...

  5. LeetCode 1166. 设计文件系统(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联 ...

  6. LeetCode 205. 同构字符串(哈希map)

    1. 题目 给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序. 两个字符 ...

  7. LeetCode 1146. 快照数组(哈希map + 有序map)

    文章目录 1. 题目 2. 解题 1. 题目 实现支持下列接口的「快照数组」- SnapshotArray: SnapshotArray(int length) - 初始化一个与指定长度相等的 类数组 ...

  8. LeetCode 1181. 前后拼接(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个「短语」列表 phrases,请你帮忙按规则生成拼接后的「新短语」列表. 「短语」(phrase)是仅由小写英文字母和空格组成的字符串.「短语」的 ...

  9. LeetCode 359. 日志速率限制器(哈希map)

    文章目录 1. 题目 2. 解题 1. 题目 请你设计一个日志系统,可以流式接收日志以及它的时间戳. 该日志会被打印出来,需要满足一个条件:当且仅当日志内容 在过去的 10 秒钟内没有被打印过. 给你 ...

最新文章

  1. 055——VUE中vue-router之路由参数的随意设置与伪静态链接地址处理:
  2. python有什么作用-大数据学习之python语言有什么作用?
  3. Hadoop源码解读系列目录
  4. 倒果汁c语言,水果榨汁补维生素C?这些补维生素的错误别再犯了
  5. windows7+tomcat7+nginx1.11.3 +memcached
  6. python call agilent com_python 控制Asterisk AMI接口外呼电话的例子
  7. Java 设计模式之普通代理
  8. python显示shape为(224,224,64)的图像?plt.imshow
  9. 从入门到入土:python爬虫|SCU每日打卡自动填写|测试训练|
  10. Markdown示例
  11. centos6.6装mysql5.7_centos 6.5装mysql5.7
  12. endnotex7 + word2016 高效管理参考文献
  13. 分词:词性标注北大标准
  14. 项目经理,你有什么优势吗?
  15. 年度征文 | 回顾2022,展望2023(我难忘的2022,我憧憬的2023)
  16. 操作系统开发系列—13.i.进程调度 ●
  17. java 游标 查数据_Java中的大量数据查询
  18. 【PaddleOCR】一、PaddleOCR安装、测试(Win10)
  19. composer更换镜像源
  20. 索罗斯:走在时间前面的狐狸

热门文章

  1. 关于无法加载已创建的布局文件的问题的解决方案以及已布局在对应的R文件中未生成相应ID的问题的解决
  2. java连接数据库sql server_将SQL Server数据库连接到Java
  3. linux内核源码目录结构(2.6.35.7版本)
  4. 树的遍历和图的遍历的异同
  5. Thinkphp带表情的评论回复实例
  6. 将python代码编译成.so文件
  7. UEditor编辑器第一次赋值失败的解决方法
  8. MinerConfig.java 爬取配置类
  9. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q40-Q44)
  10. Python核心教程(第二版)读书笔记(三)