第 177 场周赛

5169. 日期之间隔几天

1
2
3
4
5
6
7
8
9
10
class Solution(object):
def daysBetweenDates(self, date1, date2):
import datetime
d1 = datetime.datetime.strptime(date1, '%Y-%m-%d')
d2 = datetime.datetime.strptime(date2, '%Y-%m-%d')
if(d1 > d2):
d = d1 - d2
else:
d = d2 - d1
return d.days

5170. 验证二叉树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
bool validateBinaryTreeNodes(int n, vector<int>& leftChild, vector<int>& rightChild) {
vector<int> visited(n);
queue<int> q;
q.push(0);
int count = 0;
while(!q.empty()){
int cur = q.front(); q.pop();
if(visited[cur]) return false;
visited[cur] = 1;
if(leftChild[cur] != -1) q.push(leftChild[cur]);
if(rightChild[cur] != -1) q.push(rightChild[cur]);
count++;
}
return count == n;
}
};

5171. 最接近的因数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
vector<int> closestDivisors(int num) {
int n1 = num+1, n2 = num+2;
vector<int> ret(2);
int curmin = INT_MAX;
for(int i=1; i<=sqrt(n1); i++){
int f = n1 % i;
if(f == 0 && abs(n1/i-i)<curmin){
curmin = abs(n1/i-i);
ret[0] = i; ret[1] = n1/i;
}
}
for(int i=1; i<=sqrt(n2); i++){
int f = n2 % i;
if(f == 0 && abs(n2/i-i)<curmin){
curmin = abs(n2/i-i);
ret[0] = i; ret[1] = n2/i;
}
}
return ret;
}
};

5172. 形成三的最大倍数

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class Solution {
public:
string largestMultipleOfThree(vector<int>& digits) {
vector<vector<int>> v(3);
int sum = 0;
for (auto x : digits)
{
v[x%3].push_back(x);
sum += x;
sum %= 3;
}
vector<int> r;
for (int i = 0; i < 3; ++ i)
{
sort(v[i].begin(), v[i].end(), greater<int>());
}

if (sum == 0)
{
for (int i = 0; i < 3; ++ i)
{
int c = v[i].size();
for (int j = 0; j < c; ++ j) r.push_back(v[i][j]);
}
}
else if (sum == 1)
{
if (v[1].size() >= 1)
{
for (int i = 0; i < 3; ++ i)
{
int c = v[i].size();
if (i == 1) c --;
for (int j = 0; j < c; ++ j) r.push_back(v[i][j]);
}
}
else
{
for (int i = 0; i < 3; ++ i)
{
int c = v[i].size();
if (i == 2) c -= 2;
for (int j = 0; j < c; ++ j) r.push_back(v[i][j]);
}
}
}
else if (sum == 2)
{
if (v[2].size() >= 1)
{
for (int i = 0; i < 3; ++ i)
{
int c = v[i].size();
if (i == 2) c --;
for (int j = 0; j < c; ++ j) r.push_back(v[i][j]);
}
}
else
{
for (int i = 0; i < 3; ++ i)
{
int c = v[i].size();
if (i == 1) c -= 2;
for (int j = 0; j < c; ++ j) r.push_back(v[i][j]);
}
}
}

if (r.empty()) return "";

sort(r.begin(), r.end(), greater<int>());
if (r[0] == 0) return "0";

string ret;
for (auto x : r)
ret += x+'0';
return ret;
}
};
Donate? comment?