class Solution { public: ? ? vector<vector<string>> displayTable(vector<vector<string>>& orders) { ? ? ? ? unordered_map<int, map<string, int>> tblFoodCnt; ? ? ? ? unordered_set<string> nameSet; ? ? ? ? vector<string> nameList;
? ? ? ? for (auto &order : orders) { ? ? ? ? ? ? int tblId = stoi(order[1]); ? ? ? ? ? ? ++tblFoodCnt[tblId][order[2]]; ? ? ? ? ? ? nameSet.insert(order[2]); ? ? ? ? }
? ? ? ? for (auto &name : nameSet) { ? ? ? ? ? ? nameList.push_back(name); ? ? ? ? } ? ? ? ? sort(nameList.begin(), nameList.end());
? ? ? ? vector<int> ids; ? ? ? ? for (auto &[id, _] : tblFoodCnt) { ? ? ? ? ? ? ids.push_back(id); ? ? ? ? } ? ? ? ? sort(ids.begin(), ids.end());
? ? ? ? int m = tblFoodCnt.size(); ? ? ? ? int n = nameList.size();
? ? ? ? vector<vector<string>> table(m + 1, vector<string>(n + 1));
? ? ? ? table[0][0] = "Table"; ? ? ? ? copy(nameList.begin(), nameList.end(), table[0].begin() + 1); ? ? ? ? for (int i = 0; i < m; i++) { ? ? ? ? ? ? int id = ids[i]; ? ? ? ? ? ? auto &cnt = tblFoodCnt[id]; ? ? ? ? ? ? table[i + 1][0] = to_string(id); ? ? ? ? ? ? for (int j = 0; j < n; j++) { ? ? ? ? ? ? ? ? table[i + 1][j + 1] = to_string(cnt[nameList[j]]); ? ? ? ? ? ? } ? ? ? ? }
? ? ? ? return table; ? ? } }; ?
|