leetcode 周赛

leetcode 周赛

100313. 所有球里面不同颜色的数目

所有球里面不同颜色的数目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public:
map<int,int> balls; //球的序号,颜色值
map<int,int> colors; //颜色值,该颜色值个数
vector<int> queryResults(int limit, vector<vector<int>>& queries) {
vector<vector<int>>& q = queries;
vector<int> ans;
int n = q.size();
int res=0;
for(int i=0;i<n;i++){
//该气球已经有颜色了
if(balls[ q[i][0] ]){
//先将原先存在的气球和颜色从两个数组中去除
colors[ balls[q[i][0]] ] --;
if( colors[ balls[q[i][0]] ] == 0) res --;
}

//加入新的颜色
balls[ q[i][0] ] = q[i][1];
colors[ q[i][1] ] ++;
if(colors[ q[i][1] ] == 1) res ++;

ans.push_back(res);
}
return ans;
}
};

100321.优质数对的总数 II

优质数对的总数 II

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Solution {
public:
map<int,int> mp; //nums1数组中某个数的约数 ; 该约数的总个数

//求nums1[i]的约数和对应个数
void cnt(int v){
for(int i=1;i<=v/i;i++){
if(v % i == 0){
mp[i] ++;
//重复的约数只记作一个(如4的约数为一个2)
//这个if一定要在上一个if里面
if(i != (v/i)){
mp[v/i] ++;
}
}

}

}
long long numberOfPairs(vector<int>& nums1, vector<int>& nums2, int k) {
int n = nums1.size(); int m = nums2.size();
long long res = 0;
for(int i=0;i<n;i++){
cnt(nums1[i]);
}
for(int i=0;i<m;i++){
nums2[i] *= k;
}
for(int i=0;i<m;i++){
res += mp[ nums2[i] ];
}
return res;
}
};

100306. 不包含相邻元素的子序列的最大和

不包含相邻元素的子序列的最大和


leetcode 周赛
https://cs-lb.github.io/2024/05/26/leetcode-周赛/
作者
Liu Bo
发布于
2024年5月26日
许可协议