Skip to content

Commit fac1663

Browse files
committed
feat: add solutions to lc problem: No.1318
No.1318.Minimum Flips to Make a OR b Equal to c
1 parent 72b6c6c commit fac1663

File tree

6 files changed

+190
-2
lines changed

6 files changed

+190
-2
lines changed

solution/1300-1399/1318.Minimum Flips to Make a OR b Equal to c/README.md

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,90 @@
4848

4949
<!-- 这里可写通用的实现逻辑 -->
5050

51+
**方法一:位运算**
52+
53+
逐位提取 a, b, c 对应二进制位,进行比较计数。
54+
5155
<!-- tabs:start -->
5256

5357
### **Python3**
5458

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

5761
```python
58-
62+
class Solution:
63+
def minFlips(self, a: int, b: int, c: int) -> int:
64+
ans = 0
65+
for i in range(31):
66+
x, y, z = (a >> i) & 1, (b >> i) & 1, (c >> i) & 1
67+
if (x | y) == z:
68+
continue
69+
if x == 1 and y == 1 and z == 0:
70+
ans += 2
71+
else:
72+
ans += 1
73+
return ans
5974
```
6075

6176
### **Java**
6277

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

6580
```java
81+
class Solution {
82+
public int minFlips(int a, int b, int c) {
83+
int ans = 0;
84+
for (int i = 0; i < 31; ++i) {
85+
int x = (a >> i) & 1, y = (b >> i) & 1, z = (c >> i) & 1;
86+
if ((x | y) == z) {
87+
continue;
88+
}
89+
if (x == 1 && y == 1 && z == 0) {
90+
++ans;
91+
}
92+
++ans;
93+
}
94+
return ans;
95+
}
96+
}
97+
```
98+
99+
### **C++**
100+
101+
```cpp
102+
class Solution {
103+
public:
104+
int minFlips(int a, int b, int c) {
105+
int ans = 0;
106+
for (int i = 0; i < 31; ++i)
107+
{
108+
int x = (a >> i) & 1, y = (b >> i) & 1, z = (c >> i) & 1;
109+
if ((x | y) == z) continue;
110+
if (x == 1 && y == 1 && z == 0) ++ans;
111+
++ans;
112+
}
113+
return ans;
114+
}
115+
};
116+
```
66117
118+
### **Go**
119+
120+
```go
121+
func minFlips(a int, b int, c int) int {
122+
ans := 0
123+
for i := 0; i < 31; i++ {
124+
x, y, z := (a>>i)&1, (b>>i)&1, (c>>i)&1
125+
if (x | y) == z {
126+
continue
127+
}
128+
if x == 1 && y == 1 && z == 0 {
129+
ans++
130+
}
131+
ans++
132+
}
133+
return ans
134+
}
67135
```
68136

69137
### **...**

solution/1300-1399/1318.Minimum Flips to Make a OR b Equal to c/README_EN.md

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,77 @@ Flip operation&nbsp;consists of change&nbsp;<strong>any</strong>&nbsp;single bit
5959
### **Python3**
6060

6161
```python
62-
62+
class Solution:
63+
def minFlips(self, a: int, b: int, c: int) -> int:
64+
ans = 0
65+
for i in range(31):
66+
x, y, z = (a >> i) & 1, (b >> i) & 1, (c >> i) & 1
67+
if (x | y) == z:
68+
continue
69+
if x == 1 and y == 1 and z == 0:
70+
ans += 2
71+
else:
72+
ans += 1
73+
return ans
6374
```
6475

6576
### **Java**
6677

6778
```java
79+
class Solution {
80+
public int minFlips(int a, int b, int c) {
81+
int ans = 0;
82+
for (int i = 0; i < 31; ++i) {
83+
int x = (a >> i) & 1, y = (b >> i) & 1, z = (c >> i) & 1;
84+
if ((x | y) == z) {
85+
continue;
86+
}
87+
if (x == 1 && y == 1 && z == 0) {
88+
++ans;
89+
}
90+
++ans;
91+
}
92+
return ans;
93+
}
94+
}
95+
```
96+
97+
### **C++**
98+
99+
```cpp
100+
class Solution {
101+
public:
102+
int minFlips(int a, int b, int c) {
103+
int ans = 0;
104+
for (int i = 0; i < 31; ++i)
105+
{
106+
int x = (a >> i) & 1, y = (b >> i) & 1, z = (c >> i) & 1;
107+
if ((x | y) == z) continue;
108+
if (x == 1 && y == 1 && z == 0) ++ans;
109+
++ans;
110+
}
111+
return ans;
112+
}
113+
};
114+
```
68115
116+
### **Go**
117+
118+
```go
119+
func minFlips(a int, b int, c int) int {
120+
ans := 0
121+
for i := 0; i < 31; i++ {
122+
x, y, z := (a>>i)&1, (b>>i)&1, (c>>i)&1
123+
if (x | y) == z {
124+
continue
125+
}
126+
if x == 1 && y == 1 && z == 0 {
127+
ans++
128+
}
129+
ans++
130+
}
131+
return ans
132+
}
69133
```
70134

71135
### **...**
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
int minFlips(int a, int b, int c) {
4+
int ans = 0;
5+
for (int i = 0; i < 31; ++i)
6+
{
7+
int x = (a >> i) & 1, y = (b >> i) & 1, z = (c >> i) & 1;
8+
if ((x | y) == z) continue;
9+
if (x == 1 && y == 1 && z == 0) ++ans;
10+
++ans;
11+
}
12+
return ans;
13+
}
14+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func minFlips(a int, b int, c int) int {
2+
ans := 0
3+
for i := 0; i < 31; i++ {
4+
x, y, z := (a>>i)&1, (b>>i)&1, (c>>i)&1
5+
if (x | y) == z {
6+
continue
7+
}
8+
if x == 1 && y == 1 && z == 0 {
9+
ans++
10+
}
11+
ans++
12+
}
13+
return ans
14+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public int minFlips(int a, int b, int c) {
3+
int ans = 0;
4+
for (int i = 0; i < 31; ++i) {
5+
int x = (a >> i) & 1, y = (b >> i) & 1, z = (c >> i) & 1;
6+
if ((x | y) == z) {
7+
continue;
8+
}
9+
if (x == 1 && y == 1 && z == 0) {
10+
++ans;
11+
}
12+
++ans;
13+
}
14+
return ans;
15+
}
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def minFlips(self, a: int, b: int, c: int) -> int:
3+
ans = 0
4+
for i in range(31):
5+
x, y, z = (a >> i) & 1, (b >> i) & 1, (c >> i) & 1
6+
if (x | y) == z:
7+
continue
8+
if x == 1 and y == 1 and z == 0:
9+
ans += 2
10+
else:
11+
ans += 1
12+
return ans

0 commit comments

Comments
 (0)