第 200 场周赛

1534. 统计好三元组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
int countGoodTriplets(vector<int>& arr, int a, int b, int c) {
int nCount = 0,nSize = arr.size();

for(int i = 0; i < nSize - 2;++i){
for(int j =i+1;j<nSize -1 ;++j){
for(int k = j+1;k<nSize;k++){
if(abs(arr[i] - arr[j])<=a && abs(arr[j] - arr[k])<=b && abs(arr[i]-arr[k])<=c){
nCount ++;
}
}
}
}
return nCount;
}
};

1535. 找出数组游戏的赢家

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
int getWinner(vector<int>& arr, int k) {
int n = arr.size(), i = 1, ans = arr[0], t=k;
while(t-- && i < n)//模拟k次
{
if(ans < arr[i])//碰见比我大的
{
ans = arr[i];//更改答案
t = k-1;//该大数,还要模拟k-1次
}
i++;
}
return ans;
}
};

1536. 排布二进制网格的最少交换次数

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
36
class Solution {
public:
int minSwaps(vector<vector<int>>& grid) {
int n = grid.size(); //网格规模
vector<int> a; //记录每一行后缀0个数的数组
for(int i = 0; i < n; i++)
{
int count = 0;
for(int j = n - 1; j >= 0; j--)
{
if(grid[i][j] == 0) count++; //数每一行的后缀0
else break;
}
a.push_back(count);
}
int count = 0; //交换次数
for(int i = 0; i < n - 1; i++)
{
if(a[i] >= n - i - 1) continue;//满足条件,该行直接跳过
else{//不满足条件
int j = i; //用新参数遍历找满足条件的后缀0
for(; j < n; j++)
{
if(a[j] >= n - i - 1) break;
}
if(j == n) return -1; //找不到,直接返回-1
for(; j > i; j--) //找到了最先满足条件的后缀0个数
{
swap(a[j], a[j - 1]); //每一行交换上去
count++; //记录交换次数
}
}
}
return count;
}
};

1537. 最大得分

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:
int maxSum(vector<int>& nums1, vector<int>& nums2) {
long sum1 = 0, sum2 = 0;
long res = 0;
int i = 0, j = 0;
while(i < nums1.size() && j < nums2.size()){
if(nums1[i] == nums2[j]){
res += (max(sum1, sum2) + nums1[i]);
sum1 = 0;
sum2 = 0;
i++;
j++;
}
else if(nums1[i] < nums2[j]){
sum1 += nums1[i];
i++;
}
else{
sum2 += nums2[j];
j++;
}
}
while(i < nums1.size()){
sum1 += nums1[i];
i++;
}
while(j < nums2.size()){
sum2 += nums2[j];
j++;
}
res += max(sum1, sum2);
return res % ((int)pow(10, 9) + 7 );
}
};
Donate? comment?