问题描述 链接到标题
解题思路 链接到标题
模拟,哈希表+排序
代码 链接到标题
class Solution {
public:
int to_min(string &s) {
return ((s[0] - '0') * 10 + s[1] - '0') * 60 + (s[3] - '0') * 10 + s[4] - '0';
}
bool in_hour(vector<string> &time, int j) {
return to_min(time[j]) - to_min(time[j - 2]) <= 60;
}
vector<string> alertNames(vector<string> &keyName, vector<string> &keyTime) {
unordered_map<string, set<string>> name_time;
vector<string> time;
unordered_set<string> res;
for (int i = 0; i < keyName.size(); i++) {
name_time[keyName[i]].insert(keyTime[i]);
}
for (auto &iter : name_time) {
time.assign(iter.second.begin(), iter.second.end());
for (int j = 2; j < time.size(); j++) {
if (in_hour(time, j)) {
if (res.find(iter.first) == res.end())
res.insert(iter.first);
}
}
}
vector<string> man(res.begin(), res.end());
std::sort(man.begin(), man.end());
return man;
}
};