-
Notifications
You must be signed in to change notification settings - Fork 56
/
Solution.java
71 lines (69 loc) · 1.95 KB
/
Solution.java
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
package g1001_1100.s1007_minimum_domino_rotations_for_equal_row;
// #Medium #Array #Greedy #Udemy_Arrays #2022_02_21_Time_5_ms_(79.64%)_Space_94.6_MB_(43.31%)
public class Solution {
public int minDominoRotations(int[] tops, int[] bottoms) {
int top = tops[0];
int tCount = 0;
int bCount = 0;
int tSwaps;
int bSwaps;
int swaps = 0;
boolean valid = true;
for (int i = 0; i < tops.length; i++) {
if (tops[i] == top) {
tCount++;
}
if (bottoms[i] == top) {
bCount++;
}
if (tops[i] != top && bottoms[i] != top) {
valid = false;
swaps = -1;
break;
}
}
if (valid) {
tSwaps = tops.length - tCount;
bSwaps = bottoms.length - bCount;
swaps = Math.min(tSwaps, bSwaps);
}
int bottom = bottoms[0];
int tCount1 = 0;
int bCount1 = 0;
int tSwaps1;
int bSwaps1;
int swaps1 = 0;
boolean valid1 = true;
for (int i = 0; i < bottoms.length; i++) {
if (tops[i] == bottom) {
tCount1++;
}
if (bottoms[i] == bottom) {
bCount1++;
}
if (tops[i] != bottom && bottoms[i] != bottom) {
valid1 = false;
swaps1 = -1;
break;
}
}
if (valid1) {
tSwaps1 = tops.length - tCount1;
bSwaps1 = bottoms.length - bCount1;
swaps1 = Math.min(tSwaps1, bSwaps1);
}
int[] ans = new int[2];
if (swaps1 < swaps) {
ans[0] = swaps1;
ans[1] = swaps;
} else {
ans[0] = swaps;
ans[1] = swaps1;
}
if (ans[0] != -1) {
return ans[0];
} else {
return ans[1];
}
}
}