【LeetCode】点菜展示表 Java 题解
题目描述
给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi] ,其中 customerNamei 是客户的姓名,tableNumberi 是客户所在餐桌的桌号,而 foodItemi 是客户点的餐品名称。
请你返回该餐厅的 点菜展示表 。在这张表中,表中第一行为标题,其第一列为餐桌桌号 “Table” ,后面每一列都是按字母顺序排列的餐品名称。接下来每一行中的项则表示每张餐桌订购的相应餐品数量,第一列应当填对应的桌号,后面依次填写下单的餐品数量。
注意:客户姓名不是点菜展示表的一部分。此外,表中的数据行应该按餐桌桌号升序排列。
复制代码
思路分析
找个题目提干比较长,需要耐心阅读。仔细阅读分析之后,发现这个题目思维逻辑不难,我们需要分别记录 food, table, tableFood 数量并快速取出。
代码中使用了 TreeSet 数据结构。我们来看一下 TreeSet 的说明。是基于 TreeMap 实现,提供 log(n) 的操作时间复杂度。
复制代码
TreeMap 是基于 Red-Black tree 实现。
复制代码
代码
复制代码
总结
上述代码的时间复杂度是 O(n), 空间复杂度是 O(n * n)
坚持每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/bb559ee7d6386b6b7e0b30e3c】。文章转载请联系作者。
评论