-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy path1418-DisplayTableOfFoodOrdersInARestaurant.cs
65 lines (54 loc) · 2.15 KB
/
1418-DisplayTableOfFoodOrdersInARestaurant.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//-----------------------------------------------------------------------------
// Runtime: 700ms
// Memory Usage: 47 MB
// Link: https://leetcode.com/submissions/detail/364031746/
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
namespace LeetCode
{
public class _1418_DisplayTableOfFoodOrdersInARestaurant
{
public IList<IList<string>> DisplayTable(IList<IList<string>> orders)
{
var foods = new HashSet<string>();
var table = new Dictionary<int, Dictionary<string, int>>();
foreach (var order in orders)
{
var tableNumber = Convert.ToInt32(order[1]);
var food = order[2];
foods.Add(food);
if (!table.ContainsKey(tableNumber))
table.Add(tableNumber, new Dictionary<string, int>());
var currentTable = table[tableNumber];
if (currentTable.ContainsKey(food))
currentTable[food]++;
else
currentTable.Add(food, 1);
}
var result = new List<IList<string>>();
var firstRow = new List<string>() { "Table" };
var sortedFoodItems = foods.OrderBy(x => x, StringComparer.Ordinal).ToArray();
firstRow.AddRange(sortedFoodItems);
result.Add(firstRow);
var tableIndexs = table.Keys.OrderBy(x => x).ToArray();
const string zeroString = "0";
foreach (var tableNumber in tableIndexs)
{
var currentTable = table[tableNumber];
var tableRow = new List<string>();
tableRow.Add(tableNumber.ToString());
foreach (var foodItem in sortedFoodItems)
{
if (currentTable.ContainsKey(foodItem))
tableRow.Add(currentTable[foodItem].ToString());
else
tableRow.Add(zeroString);
}
result.Add(tableRow);
}
return result;
}
}
}