Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 84706c3

Browse files
committed
feat: update solutions to leetcode problem: No.0832
1 parent 8b2c308 commit 84706c3

File tree

5 files changed

+156
-44
lines changed

5 files changed

+156
-44
lines changed

‎solution/0800-0899/0832.Flipping an Image/README.md‎

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,80 @@
4040

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

43+
遍历矩阵每一行,利用双指针 p, q 进行水平交换翻转,顺便反转图像(1 变 0,0 变 1:`1 ^ 1` = 0,`0 ^ 1` = 1)。
44+
4345
<!-- tabs:start -->
4446

4547
### **Python3**
4648

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

4951
```python
50-
52+
class Solution:
53+
def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]:
54+
m, n = len(A), len(A[0])
55+
for i in range(m):
56+
p, q = 0, n - 1
57+
while p < q:
58+
t = A[i][p] ^ 1
59+
A[i][p] = A[i][q] ^ 1
60+
A[i][q] = t
61+
p += 1
62+
q -= 1
63+
if p == q:
64+
A[i][p] ^= 1
65+
return A
5166
```
5267

5368
### **Java**
5469

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

5772
```java
73+
class Solution {
74+
public int[][] flipAndInvertImage(int[][] A) {
75+
int m = A.length, n = A[0].length;
76+
for (int i = 0; i < m; ++i) {
77+
int p = 0, q = n - 1;
78+
while (p < q) {
79+
int t = A[i][p] ^ 1;
80+
A[i][p] = A[i][q] ^ 1;
81+
A[i][q] = t;
82+
++p;
83+
--q;
84+
}
85+
if (p == q) {
86+
A[i][p] ^= 1;
87+
}
88+
}
89+
return A;
90+
}
91+
}
92+
```
5893

94+
### **C++**
95+
96+
```cpp
97+
class Solution {
98+
public:
99+
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
100+
int m = A.size(), n = A[0].size();
101+
for (int i = 0; i < m; ++i) {
102+
int p = 0, q = n - 1;
103+
while (p < q) {
104+
int t = A[i][p] ^ 1;
105+
A[i][p] = A[i][q] ^ 1;
106+
A[i][q] = t;
107+
++p;
108+
--q;
109+
}
110+
if (p == q) {
111+
A[i][p] ^= 1;
112+
}
113+
}
114+
return A;
115+
}
116+
};
59117
```
60118
61119
### **...**

‎solution/0800-0899/0832.Flipping an Image/README_EN.md‎

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,69 @@ Then invert the image: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
5252
### **Python3**
5353

5454
```python
55-
55+
class Solution:
56+
def flipAndInvertImage(self, A: List[List[int]]) -> List[List[int]]:
57+
m, n = len(A), len(A[0])
58+
for i in range(m):
59+
p, q = 0, n - 1
60+
while p < q:
61+
t = A[i][p] ^ 1
62+
A[i][p] = A[i][q] ^ 1
63+
A[i][q] = t
64+
p += 1
65+
q -= 1
66+
if p == q:
67+
A[i][p] ^= 1
68+
return A
5669
```
5770

5871
### **Java**
5972

6073
```java
74+
class Solution {
75+
public int[][] flipAndInvertImage(int[][] A) {
76+
int m = A.length, n = A[0].length;
77+
for (int i = 0; i < m; ++i) {
78+
int p = 0, q = n - 1;
79+
while (p < q) {
80+
int t = A[i][p] ^ 1;
81+
A[i][p] = A[i][q] ^ 1;
82+
A[i][q] = t;
83+
++p;
84+
--q;
85+
}
86+
if (p == q) {
87+
A[i][p] ^= 1;
88+
}
89+
}
90+
return A;
91+
}
92+
}
93+
```
6194

95+
### **C++**
96+
97+
```cpp
98+
class Solution {
99+
public:
100+
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
101+
int m = A.size(), n = A[0].size();
102+
for (int i = 0; i < m; ++i) {
103+
int p = 0, q = n - 1;
104+
while (p < q) {
105+
int t = A[i][p] ^ 1;
106+
A[i][p] = A[i][q] ^ 1;
107+
A[i][q] = t;
108+
++p;
109+
--q;
110+
}
111+
if (p == q) {
112+
A[i][p] ^= 1;
113+
}
114+
}
115+
return A;
116+
}
117+
};
62118
```
63119
64120
### **...**
Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
class Solution {
2-
public:
3-
vector<vector<int>> flipAndInvertImage(vector<vector<int>> &A) {
4-
5-
int temp, Len = A[0].size();
6-
7-
for (int i = 0; i < A.size(); i++)
8-
{
9-
for (int j = 0; j < ((Len + 1) / 2); j++)
10-
{
11-
temp = !A[i][j];
12-
A[i][j] = !A[i][Len - j - 1];
13-
A[i][Len - j - 1] = temp;
2+
public:
3+
vector<vector<int>> flipAndInvertImage(vector<vector<int>>& A) {
4+
int m = A.size(), n = A[0].size();
5+
for (int i = 0; i < m; ++i) {
6+
int p = 0, q = n - 1;
7+
while (p < q) {
8+
int t = A[i][p] ^ 1;
9+
A[i][p] = A[i][q] ^ 1;
10+
A[i][q] = t;
11+
++p;
12+
--q;
13+
}
14+
if (p == q) {
15+
A[i][p] ^= 1;
1416
}
1517
}
1618
return A;
1719
}
18-
};
20+
};
Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,19 @@
11
class Solution {
22
public int[][] flipAndInvertImage(int[][] A) {
3-
for (int[] arr : A) {
4-
reverse(arr, 0, arr.length - 1);
5-
for (int i = 0; i < arr.length; ++i) {
6-
arr[i] ^= 1;
3+
int m = A.length, n = A[0].length;
4+
for (int i = 0; i < m; ++i) {
5+
int p = 0, q = n - 1;
6+
while (p < q) {
7+
int t = A[i][p] ^ 1;
8+
A[i][p] = A[i][q] ^ 1;
9+
A[i][q] = t;
10+
++p;
11+
--q;
12+
}
13+
if (p == q) {
14+
A[i][p] ^= 1;
715
}
816
}
917
return A;
1018
}
11-
12-
private void reverse(int[] arr, int i, int j) {
13-
while (i < j) {
14-
swap(arr, i++, j--);
15-
}
16-
}
17-
18-
private void swap(int[] arr, int i, int j) {
19-
int tmp = arr[i];
20-
arr[i] = arr[j];
21-
arr[j] = tmp;
22-
}
23-
}
19+
}
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
class Solution:
2-
def flipAndInvertImage(self, A):
3-
"""
4-
:type A: List[List[int]]
5-
:rtype: List[List[int]]
6-
"""
7-
8-
Len=len(A[0])
9-
10-
forrowinA:
11-
foriinrange( (Len+1) //2 ):
12-
row[i], row[Len-i-1] =int(notrow[Len-i-1]), int(notrow[i])
13-
2+
def flipAndInvertImage(self, A: List[List[int]]) ->List[List[int]]:
3+
m, n=len(A), len(A[0])
4+
foriinrange(m):
5+
p, q=0, n-1
6+
whilep<q:
7+
t=A[i][p] ^1
8+
A[i][p] =A[i][q] ^1
9+
A[i][q] =t
10+
p+=1
11+
q-=1
12+
ifp==q:
13+
A[i][p] ^=1
1414
return A

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /