Skip to content

Commit 27c01f6

Browse files
committed
feat: add solutions to lc problem: No.2352
No.2352.Equal Row and Column Pairs
1 parent 4043fc7 commit 27c01f6

File tree

6 files changed

+210
-83
lines changed

6 files changed

+210
-83
lines changed

solution/2300-2399/2352.Equal Row and Column Pairs/README.md

Lines changed: 98 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@
5050

5151
<!-- 这里可写通用的实现逻辑 -->
5252

53+
**方法一:模拟**
54+
55+
将矩阵 `grid` 的每一行以及每一列进行比较,如果相等,那么就是一对相等行列对,答案加一。
56+
57+
时间复杂度 $O(n^3)$,空间复杂度 $O(1)$。其中 $n$ 为矩阵 `grid` 的行数或列数。
58+
5359
<!-- tabs:start -->
5460

5561
### **Python3**
@@ -59,16 +65,21 @@
5965
```python
6066
class Solution:
6167
def equalPairs(self, grid: List[List[int]]) -> int:
62-
n = len(grid)
63-
g = []
64-
for j in range(n):
65-
t = []
66-
for i in range(n):
67-
t.append(grid[i][j])
68-
g.append(t)
68+
g = [list(col) for col in zip(*grid)]
6969
return sum(row == col for row in grid for col in g)
7070
```
7171

72+
```python
73+
class Solution:
74+
def equalPairs(self, grid: List[List[int]]) -> int:
75+
n = len(grid)
76+
ans = 0
77+
for i in range(n):
78+
for j in range(n):
79+
ans += all(grid[i][k] == grid[k][j] for k in range(n))
80+
return ans
81+
```
82+
7283
### **Java**
7384

7485
<!-- 这里可写当前语言的特殊实现逻辑 -->
@@ -84,18 +95,38 @@ class Solution {
8495
}
8596
}
8697
int ans = 0;
87-
for (int[] row : grid) {
88-
for (int[] col : g) {
89-
boolean ok = true;
98+
for (var row : grid) {
99+
for (var col : g) {
100+
int ok = 1;
90101
for (int i = 0; i < n; ++i) {
91102
if (row[i] != col[i]) {
92-
ok = false;
103+
ok = 0;
93104
break;
94105
}
95106
}
96-
if (ok) {
97-
++ans;
107+
ans += ok;
108+
}
109+
}
110+
return ans;
111+
}
112+
}
113+
```
114+
115+
```java
116+
class Solution {
117+
public int equalPairs(int[][] grid) {
118+
int n = grid.length;
119+
int ans = 0;
120+
for (int i = 0; i < n; ++i) {
121+
for (int j = 0; j < n; ++j) {
122+
int ok = 1;
123+
for (int k = 0; k < n; ++k) {
124+
if (grid[i][k] != grid[k][j]) {
125+
ok = 0;
126+
break;
127+
}
98128
}
129+
ans += ok;
99130
}
100131
}
101132
return ans;
@@ -111,13 +142,40 @@ public:
111142
int equalPairs(vector<vector<int>>& grid) {
112143
int n = grid.size();
113144
vector<vector<int>> g(n, vector<int>(n));
114-
for (int j = 0; j < n; ++j)
115-
for (int i = 0; i < n; ++i)
145+
for (int j = 0; j < n; ++j) {
146+
for (int i = 0; i < n; ++i) {
116147
g[i][j] = grid[j][i];
148+
}
149+
}
117150
int ans = 0;
118-
for (auto row : grid)
119-
for (auto col : g)
151+
for (auto& row : grid) {
152+
for (auto& col : g) {
120153
ans += row == col;
154+
}
155+
}
156+
return ans;
157+
}
158+
};
159+
```
160+
161+
```cpp
162+
class Solution {
163+
public:
164+
int equalPairs(vector<vector<int>>& grid) {
165+
int n = grid.size();
166+
int ans = 0;
167+
for (int i = 0; i < n; ++i) {
168+
for (int j = 0; j < n; ++j) {
169+
int ok = 1;
170+
for (int k = 0; k < n; ++k) {
171+
if (grid[i][k] != grid[k][j]) {
172+
ok = 0;
173+
break;
174+
}
175+
}
176+
ans += ok;
177+
}
178+
}
121179
return ans;
122180
}
123181
};
@@ -126,33 +184,46 @@ public:
126184
### **Go**
127185

128186
```go
129-
func equalPairs(grid [][]int) int {
187+
func equalPairs(grid [][]int) (ans int) {
130188
n := len(grid)
131189
g := make([][]int, n)
132190
for i := range g {
133191
g[i] = make([]int, n)
134-
}
135-
for j := 0; j < n; j++ {
136-
for i := 0; i < n; i++ {
192+
for j := 0; j < n; j++ {
137193
g[i][j] = grid[j][i]
138194
}
139195
}
140-
ans := 0
141196
for _, row := range grid {
142197
for _, col := range g {
143-
ok := true
198+
ok := 1
144199
for i, v := range row {
145200
if v != col[i] {
146-
ok = false
201+
ok = 0
147202
break
148203
}
149204
}
150-
if ok {
151-
ans++
205+
ans += ok
206+
}
207+
}
208+
return
209+
}
210+
```
211+
212+
```go
213+
func equalPairs(grid [][]int) (ans int) {
214+
for i := range grid {
215+
for j := range grid {
216+
ok := 1
217+
for k := range grid {
218+
if grid[i][k] != grid[k][j] {
219+
ok = 0
220+
break
221+
}
152222
}
223+
ans += ok
153224
}
154225
}
155-
return ans
226+
return
156227
}
157228
```
158229

solution/2300-2399/2352.Equal Row and Column Pairs/README_EN.md

Lines changed: 92 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,21 @@
4747
```python
4848
class Solution:
4949
def equalPairs(self, grid: List[List[int]]) -> int:
50-
n = len(grid)
51-
g = []
52-
for j in range(n):
53-
t = []
54-
for i in range(n):
55-
t.append(grid[i][j])
56-
g.append(t)
50+
g = [list(col) for col in zip(*grid)]
5751
return sum(row == col for row in grid for col in g)
5852
```
5953

54+
```python
55+
class Solution:
56+
def equalPairs(self, grid: List[List[int]]) -> int:
57+
n = len(grid)
58+
ans = 0
59+
for i in range(n):
60+
for j in range(n):
61+
ans += all(grid[i][k] == grid[k][j] for k in range(n))
62+
return ans
63+
```
64+
6065
### **Java**
6166

6267
```java
@@ -70,18 +75,38 @@ class Solution {
7075
}
7176
}
7277
int ans = 0;
73-
for (int[] row : grid) {
74-
for (int[] col : g) {
75-
boolean ok = true;
78+
for (var row : grid) {
79+
for (var col : g) {
80+
int ok = 1;
7681
for (int i = 0; i < n; ++i) {
7782
if (row[i] != col[i]) {
78-
ok = false;
83+
ok = 0;
7984
break;
8085
}
8186
}
82-
if (ok) {
83-
++ans;
87+
ans += ok;
88+
}
89+
}
90+
return ans;
91+
}
92+
}
93+
```
94+
95+
```java
96+
class Solution {
97+
public int equalPairs(int[][] grid) {
98+
int n = grid.length;
99+
int ans = 0;
100+
for (int i = 0; i < n; ++i) {
101+
for (int j = 0; j < n; ++j) {
102+
int ok = 1;
103+
for (int k = 0; k < n; ++k) {
104+
if (grid[i][k] != grid[k][j]) {
105+
ok = 0;
106+
break;
107+
}
84108
}
109+
ans += ok;
85110
}
86111
}
87112
return ans;
@@ -97,13 +122,40 @@ public:
97122
int equalPairs(vector<vector<int>>& grid) {
98123
int n = grid.size();
99124
vector<vector<int>> g(n, vector<int>(n));
100-
for (int j = 0; j < n; ++j)
101-
for (int i = 0; i < n; ++i)
125+
for (int j = 0; j < n; ++j) {
126+
for (int i = 0; i < n; ++i) {
102127
g[i][j] = grid[j][i];
128+
}
129+
}
103130
int ans = 0;
104-
for (auto row : grid)
105-
for (auto col : g)
131+
for (auto& row : grid) {
132+
for (auto& col : g) {
106133
ans += row == col;
134+
}
135+
}
136+
return ans;
137+
}
138+
};
139+
```
140+
141+
```cpp
142+
class Solution {
143+
public:
144+
int equalPairs(vector<vector<int>>& grid) {
145+
int n = grid.size();
146+
int ans = 0;
147+
for (int i = 0; i < n; ++i) {
148+
for (int j = 0; j < n; ++j) {
149+
int ok = 1;
150+
for (int k = 0; k < n; ++k) {
151+
if (grid[i][k] != grid[k][j]) {
152+
ok = 0;
153+
break;
154+
}
155+
}
156+
ans += ok;
157+
}
158+
}
107159
return ans;
108160
}
109161
};
@@ -112,33 +164,46 @@ public:
112164
### **Go**
113165

114166
```go
115-
func equalPairs(grid [][]int) int {
167+
func equalPairs(grid [][]int) (ans int) {
116168
n := len(grid)
117169
g := make([][]int, n)
118170
for i := range g {
119171
g[i] = make([]int, n)
120-
}
121-
for j := 0; j < n; j++ {
122-
for i := 0; i < n; i++ {
172+
for j := 0; j < n; j++ {
123173
g[i][j] = grid[j][i]
124174
}
125175
}
126-
ans := 0
127176
for _, row := range grid {
128177
for _, col := range g {
129-
ok := true
178+
ok := 1
130179
for i, v := range row {
131180
if v != col[i] {
132-
ok = false
181+
ok = 0
133182
break
134183
}
135184
}
136-
if ok {
137-
ans++
185+
ans += ok
186+
}
187+
}
188+
return
189+
}
190+
```
191+
192+
```go
193+
func equalPairs(grid [][]int) (ans int) {
194+
for i := range grid {
195+
for j := range grid {
196+
ok := 1
197+
for k := range grid {
198+
if grid[i][k] != grid[k][j] {
199+
ok = 0
200+
break
201+
}
138202
}
203+
ans += ok
139204
}
140205
}
141-
return ans
206+
return
142207
}
143208
```
144209

solution/2300-2399/2352.Equal Row and Column Pairs/Solution.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ class Solution {
33
int equalPairs(vector<vector<int>>& grid) {
44
int n = grid.size();
55
vector<vector<int>> g(n, vector<int>(n));
6-
for (int j = 0; j < n; ++j)
7-
for (int i = 0; i < n; ++i)
6+
for (int j = 0; j < n; ++j) {
7+
for (int i = 0; i < n; ++i) {
88
g[i][j] = grid[j][i];
9+
}
10+
}
911
int ans = 0;
10-
for (auto row : grid)
11-
for (auto col : g)
12+
for (auto& row : grid) {
13+
for (auto& col : g) {
1214
ans += row == col;
15+
}
16+
}
1317
return ans;
1418
}
1519
};

0 commit comments

Comments
 (0)