Skip to content

Commit 2d78869

Browse files
committed
feat: add solutions to lc problem: No.0822
No.0822.Card Flipping Game
1 parent 2136f51 commit 2d78869

File tree

6 files changed

+250
-2
lines changed

6 files changed

+250
-2
lines changed

solution/0800-0899/0822.Card Flipping Game/README.md

+89-1
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,110 @@
4040

4141
<!-- 这里可写通用的实现逻辑 -->
4242

43+
**方法一:哈希表**
44+
45+
对于位置 i,若 `fronts[i]``backs[i]` 元素相同,则一定不满足条件。找其他出现在 fronts 或 backs 中的元素的最小值即可。
46+
4347
<!-- tabs:start -->
4448

4549
### **Python3**
4650

4751
<!-- 这里可写当前语言的特殊实现逻辑 -->
4852

4953
```python
50-
54+
class Solution:
55+
def flipgame(self, fronts: List[int], backs: List[int]) -> int:
56+
same = {a for a, b in zip(fronts, backs) if a == b}
57+
ans = 9999
58+
for x in chain(fronts, backs):
59+
if x not in same:
60+
ans = min(ans, x)
61+
return ans % 9999
5162
```
5263

5364
### **Java**
5465

5566
<!-- 这里可写当前语言的特殊实现逻辑 -->
5667

5768
```java
69+
class Solution {
70+
public int flipgame(int[] fronts, int[] backs) {
71+
Set<Integer> s = new HashSet<>();
72+
int n = fronts.length;
73+
for (int i = 0; i < n; ++i) {
74+
if (fronts[i] == backs[i]) {
75+
s.add(fronts[i]);
76+
}
77+
}
78+
int ans = 9999;
79+
for (int v : fronts) {
80+
if (!s.contains(v)) {
81+
ans = Math.min(ans, v);
82+
}
83+
}
84+
for (int v : backs) {
85+
if (!s.contains(v)) {
86+
ans = Math.min(ans, v);
87+
}
88+
}
89+
return ans % 9999;
90+
}
91+
}
92+
```
93+
94+
### **C++**
95+
96+
```cpp
97+
class Solution {
98+
public:
99+
int flipgame(vector<int>& fronts, vector<int>& backs) {
100+
unordered_set<int> s;
101+
int n = fronts.size();
102+
for (int i = 0; i < n; ++i)
103+
if (fronts[i] == backs[i])
104+
s.insert(fronts[i]);
105+
int ans = 9999;
106+
for (int& v : fronts)
107+
if (!s.count(v))
108+
ans = min(ans, v);
109+
for (int& v : backs)
110+
if (!s.count(v))
111+
ans = min(ans, v);
112+
return ans % 9999;
113+
}
114+
};
115+
```
58116
117+
### **Go**
118+
119+
```go
120+
func flipgame(fronts []int, backs []int) int {
121+
s := map[int]bool{}
122+
for i, v := range fronts {
123+
if v == backs[i] {
124+
s[v] = true
125+
}
126+
}
127+
ans := 9999
128+
for _, v := range fronts {
129+
if !s[v] {
130+
ans = min(ans, v)
131+
}
132+
}
133+
for _, v := range backs {
134+
if !s[v] {
135+
ans = min(ans, v)
136+
}
137+
}
138+
return ans % 9999
139+
}
140+
141+
func min(a, b int) int {
142+
if a < b {
143+
return a
144+
}
145+
return b
146+
}
59147
```
60148

61149
### **...**

solution/0800-0899/0822.Card Flipping Game/README_EN.md

+85-1
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,97 @@ There are no good integers no matter how we flip the cards, so we return 0.
4747
### **Python3**
4848

4949
```python
50-
50+
class Solution:
51+
def flipgame(self, fronts: List[int], backs: List[int]) -> int:
52+
same = {a for a, b in zip(fronts, backs) if a == b}
53+
ans = 9999
54+
for x in chain(fronts, backs):
55+
if x not in same:
56+
ans = min(ans, x)
57+
return ans % 9999
5158
```
5259

5360
### **Java**
5461

5562
```java
63+
class Solution {
64+
public int flipgame(int[] fronts, int[] backs) {
65+
Set<Integer> s = new HashSet<>();
66+
int n = fronts.length;
67+
for (int i = 0; i < n; ++i) {
68+
if (fronts[i] == backs[i]) {
69+
s.add(fronts[i]);
70+
}
71+
}
72+
int ans = 9999;
73+
for (int v : fronts) {
74+
if (!s.contains(v)) {
75+
ans = Math.min(ans, v);
76+
}
77+
}
78+
for (int v : backs) {
79+
if (!s.contains(v)) {
80+
ans = Math.min(ans, v);
81+
}
82+
}
83+
return ans % 9999;
84+
}
85+
}
86+
```
87+
88+
### **C++**
89+
90+
```cpp
91+
class Solution {
92+
public:
93+
int flipgame(vector<int>& fronts, vector<int>& backs) {
94+
unordered_set<int> s;
95+
int n = fronts.size();
96+
for (int i = 0; i < n; ++i)
97+
if (fronts[i] == backs[i])
98+
s.insert(fronts[i]);
99+
int ans = 9999;
100+
for (int& v : fronts)
101+
if (!s.count(v))
102+
ans = min(ans, v);
103+
for (int& v : backs)
104+
if (!s.count(v))
105+
ans = min(ans, v);
106+
return ans % 9999;
107+
}
108+
};
109+
```
56110
111+
### **Go**
112+
113+
```go
114+
func flipgame(fronts []int, backs []int) int {
115+
s := map[int]bool{}
116+
for i, v := range fronts {
117+
if v == backs[i] {
118+
s[v] = true
119+
}
120+
}
121+
ans := 9999
122+
for _, v := range fronts {
123+
if !s[v] {
124+
ans = min(ans, v)
125+
}
126+
}
127+
for _, v := range backs {
128+
if !s[v] {
129+
ans = min(ans, v)
130+
}
131+
}
132+
return ans % 9999
133+
}
134+
135+
func min(a, b int) int {
136+
if a < b {
137+
return a
138+
}
139+
return b
140+
}
57141
```
58142

59143
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
int flipgame(vector<int>& fronts, vector<int>& backs) {
4+
unordered_set<int> s;
5+
int n = fronts.size();
6+
for (int i = 0; i < n; ++i)
7+
if (fronts[i] == backs[i])
8+
s.insert(fronts[i]);
9+
int ans = 9999;
10+
for (int& v : fronts)
11+
if (!s.count(v))
12+
ans = min(ans, v);
13+
for (int& v : backs)
14+
if (!s.count(v))
15+
ans = min(ans, v);
16+
return ans % 9999;
17+
}
18+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
func flipgame(fronts []int, backs []int) int {
2+
s := map[int]bool{}
3+
for i, v := range fronts {
4+
if v == backs[i] {
5+
s[v] = true
6+
}
7+
}
8+
ans := 9999
9+
for _, v := range fronts {
10+
if !s[v] {
11+
ans = min(ans, v)
12+
}
13+
}
14+
for _, v := range backs {
15+
if !s[v] {
16+
ans = min(ans, v)
17+
}
18+
}
19+
return ans % 9999
20+
}
21+
22+
func min(a, b int) int {
23+
if a < b {
24+
return a
25+
}
26+
return b
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public int flipgame(int[] fronts, int[] backs) {
3+
Set<Integer> s = new HashSet<>();
4+
int n = fronts.length;
5+
for (int i = 0; i < n; ++i) {
6+
if (fronts[i] == backs[i]) {
7+
s.add(fronts[i]);
8+
}
9+
}
10+
int ans = 9999;
11+
for (int v : fronts) {
12+
if (!s.contains(v)) {
13+
ans = Math.min(ans, v);
14+
}
15+
}
16+
for (int v : backs) {
17+
if (!s.contains(v)) {
18+
ans = Math.min(ans, v);
19+
}
20+
}
21+
return ans % 9999;
22+
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def flipgame(self, fronts: List[int], backs: List[int]) -> int:
3+
same = {a for a, b in zip(fronts, backs) if a == b}
4+
ans = 9999
5+
for x in chain(fronts, backs):
6+
if x not in same:
7+
ans = min(ans, x)
8+
return ans % 9999

0 commit comments

Comments
 (0)