博客主页: A_SHOWY
系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_
从这一场(第382场周赛)周赛开始记录,目标是尽快达到准确快速AC前三道题,每场比赛稳定在前1000名,故总结每场比赛的前三个题目。
【1】按键变更的次数
100215. 按键变更的次数https://leetcode.cn/problems/number-of-changing-keys/
这个题目过于简单,追求速度,掌握大小写之间的快速转换即可
class Solution {
public:
int countKeyChanges(string s) {
int ans = 0;
for(int i = 1; i < s.size(); i++){
if(s[i] != toupper(s[i - 1]) && s[i] != (s[i -1]) &&s[i] != tolower(s[i - 1]))
ans ++;
}
return ans;
}
};
【2】子集中元素的最大量
100206. 子集中元素的最大数量https://leetcode.cn/problems/find-the-maximum-number-of-elements-in-subset/
这道题目花费了我大量的时间,可以说踩了很多坑,有很多值得注意的细节,主要还是模拟,但是我模拟的思路错了,我是从两边往中间模拟,用了三层for把自己都绕晕了,羊佬的思路拿来借鉴后发现还有一个很大的坑,这个哈希表如果调用一个没有的话,会重新生成一个map,且这个map里只有这个数值。还要考虑这个数组里面有1的情况。
class Solution {
public:
int maximumLength(vector& nums) {
unordered_map countMap;
//统计元素出现次数
for(int num : nums){
countMap[num] ++;
}
int ans =0;
if(countMap.find(1) != countMap.end())
ans = max(1,countMap[1] % 2 ? countMap[1] : countMap[1] - 1);
for(auto& entry : countMap){
int x = entry.first;
if(x == 1) continue;
int cur = 1;
while(true){
int v = (int)sqrt(x);
if(v * v != x || countMap.find(v) == countMap.end()|| countMap[v] < 2 ) break;
x = v;
cur += 2;
}
ans = max(ans,cur);
}
return ans;
}
};
【3】Alice和Bob玩鲜花游戏
100195. Alice 和 Bob 玩鲜花游戏https://leetcode.cn/problems/alice-and-bob-playing-flower-game/
个人感觉这个题非常简单,不配作为第三题,其核心就是这两个数只要加起来是奇数,那么最后一定是Alice拿到最后一个,直接模拟很快能解出来。
class Solution {
public:
long long flowerGame(int n, int m) {
if(m % 2 == 0) return ((long long)m * n) / 2;
else{
if(n % 2) {
return ((n + 1) / 2) *((m - 1) /2) + ((n -1)/2) * ((m + 1) /2);
}
else {
return (n / 2) *((m + 1) /2) +(n / 2) *((m - 1) /2) ;
}
}
}
};