ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

hash+滑窗

2026/9/4 20:50:07 拓冰建站 浏览量
hash+滑窗

想清楚用什么数据结构 就很快😋

lc1839

双指针 模拟滑动

lc1604

hash按姓名分组存时间

转成分钟后用滑动窗口看1小时内是否有至少3次打卡,最后排序结果

stoi(s.substr(0,2))*60 +stoi(s.substr(3,2));

if(mins[i] - mins[i-2] <= 60)

class Solution {
public:
vector<string> alertNames(vector<string>& keyName, vector<string>& keyTime)
{
vector<string> ret;
int n=keyName.size();
unordered_map<string,set<string>> hash;
// 时间转分钟
auto toMin = [](string s) {
return stoi(s.substr(0,2))*60 + stoi(s.substr(3,2));
};
//1. hash分组
for(int i=0;i<n;i++)
hash[keyName[i]].insert(keyTime[i]);

// 2. 检查每个姓名的时间是否有1小时内>=3次
for(auto& [name, times] : hash) {
vector<int> mins;
for(auto& t : times) mins.push_back(toMin(t));
// 滑窗
for(int i=2; i<mins.size(); i++) {
if(mins[i] - mins[i-2] <= 60) {
ret.push_back(name);
break;
}
}
}
sort(ret.begin(), ret.end());
return ret;
}
};