-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathsolution1.js
57 lines (49 loc) · 951 Bytes
/
solution1.js
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
/**
* https://leetcode-cn.com/problems/largest-multiple-of-three/
*
* 5172. 形成三的最大倍数
*
* Hard
*/
const largestMultipleOfThree = digits => {
const record = Array(10).fill(0);
let total = 0;
const max = digits.length;
for (let i = 0; i < max; i++) {
record[digits[i]]++;
total += digits[i];
}
// 边界情况
if (record[0] === max) {
return '0';
}
if (total % 3 === 1) {
if (!deleteNum(1, record)) {
deleteNum(2, record);
deleteNum(2, record);
}
}
if (total % 3 === 2) {
if (!deleteNum(2, record)) {
deleteNum(1, record);
deleteNum(1, record);
}
}
// 输出字符串
let ans = '';
for (let i = 9; i >= 0; i--) {
while(record[i]--) {
ans += i;
}
}
return ans;
}
function deleteNum(num, record) {
for (let i = num; i <= 9; i += 3) {
if (record[i]) {
record[i]--;
return true;
}
}
return false;
}