【2022-07-24-第303场单周赛】
总结
第三题段错误不应该,第四题属于是想岔了。
Q1.第一个出现两次的字母
暴力哈希。
class Solution { public: char repeatedCharacter(string s) { int h[128]; memset(h, 0, sizeof(h)); for(auto i : s){ if(h[i] == 0) h[i]++; else return i; } return 'a'; } };
Q2.相等行列对
暴力哈希。
class Solution { public: int equalPairs(vector<vector<int>>& g) { int n = g.size(), ret = 0; map<vector<int>, int> mp; for(int i = 0; i < n; ++i) mp[g[i]]++; for(int i = 0; i < n; ++i){ vector<int> temp; for(int j = 0; j < n; ++j) temp.push_back(g[j][i]); if(mp.find(temp) != mp.end()) ret += mp[temp]; } return ret; } };
Q3.设计食物评分系统
确认过眼神,是哈希场。
class FoodRatings { public: priority_queue<pair<int, string>, vector<pair<int, string>>, greater<>> q[20010]; map<string, int> mp1; map<string, string> mp2; map<string, int> mpidx; FoodRatings(vector<string>& f, vector<string>& c, vector<int>& r) { int idx = 0; int n = f.size(); for(int i = 0; i < n; ++i){ if(mpidx.find(c[i]) == mpidx.end()){ mpidx[c[i]] = idx++; } q[mpidx[c[i]]].push({-r[i], f[i]}); mp1[f[i]] = r[i]; mp2[f[i]] = c[i]; } } void changeRating(string f, int nr) { q[mpidx[mp2[f]]].push({-nr, f}); mp1[f] = nr; } string highestRated(string c) { auto k = q[mpidx[c]].top(); while(k.first != -mp1[k.second]){ q[mpidx[c]].pop(); k = q[mpidx[c]].top(); } return k.second; } };
Q4.优质数对的数目
二进制位为1的数目和大于等于k的数对数量。
class Solution { public: int getk(int x){ int ret = 0; while(x){ ret += x & 1; x >>= 1; } return ret; } long long countExcellentPairs(vector<int>& a, int k) { long long ret = 0; unordered_set<int> st[32]; for(auto i : a){ st[getk(i)].insert(i); } int n = 0; for(int i = 0; i < 32; ++i) n += st[i].size(); for(int i = 0; i < 32; ++i){ for(auto u : st[i]){ for(int j = max(0, k - i); j < 32; ++j){ ret += st[j].size(); } } } return ret; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人