Display Table of Food Orders in a Restaurant LeetCode solution in Java

1
class Solution {
2
public List<List<String>> displayTable(List<List<String>> orders) {
3
List<List<String>> ans = new ArrayList<>();
4
List<String> head = new ArrayList<>();
5
head.add("Table");
6
Map<Integer, Map<String, Integer>> map = new TreeMap<>();
7
for (List<String> s : orders) {
8
if (!head.contains(s.get(2))) head.add(s.get(2));
9
int tbl = Integer.parseInt(s.get(1));
10
map.putIfAbsent(tbl, new TreeMap<>());
11
if (map.get(tbl).containsKey(s.get(2))) {
12
Map<String, Integer> m = map.get(tbl);
13
m.put(s.get(2), m.getOrDefault(s.get(2), 0) + 1);
14
} else {
15
map.get(tbl).put(s.get(2), 1);
16
}
17
}
18
String[] arr = head.toArray(new String[0]);
19
Arrays.sort(arr, 1, head.size());
20
head = Arrays.asList(arr);
21
ans.add(head);
22

23
for (Map.Entry<Integer, Map<String, Integer>> entry : map.entrySet()) {
24
List<String> l = new ArrayList<>();
25
l.add(entry.getKey() + "");
26
Map<String, Integer> m = entry.getValue();
27
for (int i = 1; i < arr.length; i++) {
28
if (m.containsKey(arr[i])) {
29
l.add(m.get(arr[i]) + "");
30
} else {
31
l.add("0");
32
}
33
}
34
ans.add(l);
35
}
36
System.out.print(map);
37
return ans;
38
}
39
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0