class Solution {
public:
vector<vector<string>> displayTable(vector<vector<string>>& orders) {
unordered_set<string> namelist;
unordered_map<int, unordered_map<string, int>> map;
for (auto &order : orders) {
namelist.insert(order[2]);
int id = stoi(order[1]);
++map[id][order[2]];
}
//然后对餐桌号码排序
int m=map.size();//餐桌的数量
vector<int> ids; ///vector<int> ids(m); 一个教训就是这样写会出错,除非用ids[i]=多少,不然push_back一直在后面加了
for(auto &one: map){
ids.push_back(one.first);
}
sort(ids.begin(),ids.end());
//按照食物首字母大小排序
int n = namelist.size();
vector<string> foodname;
for (auto &name : namelist) {
foodname.push_back(name);
}
sort(foodname.begin(), foodname.end());
//进入创建输出环节
vector<vector<string>> table(m + 1, vector<string>(n + 1));
table[0][0] = "Table";
copy(foodname.begin(), foodname.end(), table[0].begin() + 1);
for (int i = 0; i < m; ++i) {
int id = ids[i];
auto &cnt = map[id];
table[i + 1][0] = to_string(id);
for (int j = 0; j < n; ++j) {
table[i + 1][j + 1] = to_string(cnt[foodname[j]]);
}
}
return table;
}
};
小tips:
哈希表里面找不到对应key值的value是0!!