个人题解:题目挺简单,就是有点难
题目:
标签:
- 又臭又长。
思路:
- 这道题考察的点还是蛮多的,最主要是考察了对语言的熟悉程度。
- 最后写出的代码都是又臭又长的。不过也还挺优雅,挺有成就感。
题解:
class Solution {
public List<List<String>> displayTable(List<List<String>> orders) {
HashMap<String, HashMap<String, Integer>> map = new HashMap<>();
HashSet<String> set = new HashSet<>();
for (int i = 0; i < orders.size(); ++i) {
String tableNumber = orders.get(i).get(1), foodItem = orders.get(i).get(2);
HashMap<String, Integer> tempMap = map.getOrDefault(tableNumber, new HashMap<>());
tempMap.put(foodItem, tempMap.getOrDefault(foodItem, 0) + 1);
map.put(tableNumber, tempMap);
set.add(foodItem);
}
List<List<String>> res = new ArrayList<>();
String[] tableNumberArray = new String[map.keySet().size()], foodItemArray = new String[set.size()];
map.keySet().toArray(tableNumberArray);
Arrays.sort(tableNumberArray, (s1, s2) -> (Integer.parseInt(s1) - Integer.parseInt(s2)));
set.toArray(foodItemArray);
Arrays.sort(foodItemArray);
List<String> head = new ArrayList<>();
head.add("Table");
for (String s : foodItemArray) {
head.add(s);
}
res.add(head);
for (String table : tableNumberArray) {
List<String> tableList = new ArrayList<>();
tableList.add(table);
HashMap<String, Integer> tempMap = map.get(table);
for (String food : foodItemArray) {
tableList.add("" + tempMap.getOrDefault(food, 0));
}
res.add(tableList);
}
return res;
}
}