Open yankewei opened 3 years ago
go语言的map没有php的数据方便,哈哈,但是要注意返回类型,必须是string
class Solution {
/**
* @param String[][] $orders
* @return String[][]
*/
function displayTable($orders) {
$ret = [['Table']];
// 保存所有的餐品
$foods = [];
// 保存所有的桌号
$tables = [];
// 生成一个嵌套数据,数据key是桌号,value是一个数组,value的key是餐品名称,value的value是餐品数量
$cntByFoodByTable = [];
foreach ($orders as $order) {
if (isset($cntByFoodByTable[$order[1]])) {
$cntByFood = $cntByFoodByTable[$order[1]];
if (isset($cntByFood[$order[2]])) {
$cntByFood[$order[2]] = $cntByFood[$order[2]] + 1;
} else {
$cntByFood[$order[2]] = 1;
}
$cntByFoodByTable[$order[1]] = $cntByFood;
} else {
$cntByFoodByTable[$order[1]][$order[2]] = 1;
}
$foods[] = $order[2];
$tables[] = $order[1];
}
$foods = array_unique($foods);
sort($foods);
$tables = array_unique($tables);
sort($tables);
foreach ($foods as $food) {
$ret[0][] = $food;
}
foreach ($tables as $table) {
$row = [];
$row[] = $table;
foreach ($foods as $food) {
$row[] = isset($cntByFoodByTable[$table][$food]) ? $cntByFoodByTable[$table][$food] : 0;
}
$ret[] = $row;
}
return $ret;
}
}
给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi] ,其中 customerNamei 是客户的姓名,tableNumberi 是客户所在餐桌的桌号,而 foodItemi 是客户点的餐品名称。
请你返回该餐厅的 点菜展示表 。在这张表中,表中第一行为标题,其第一列为餐桌桌号 “Table” ,后面每一列都是按字母顺序排列的餐品名称。接下来每一行中的项则表示每张餐桌订购的相应餐品数量,第一列应当填对应的桌号,后面依次填写下单的餐品数量。
注意:客户姓名不是点菜展示表的一部分。此外,表中的数据行应该按餐桌桌号升序排列。
示例 1:
示例 2:
示例 3:
提示:
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/display-table-of-food-orders-in-a-restaurant 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。