@@ -78,21 +78,21 @@ class Solution:
78
78
def dfs (i , j ):
79
79
q.append((i, j))
80
80
grid[i][j] = 2
81
- for a, b in dirs:
81
+ for a, b in pairwise( dirs) :
82
82
x, y = i + a, j + b
83
83
if 0 <= x < n and 0 <= y < n and grid[x][y] == 1 :
84
84
dfs(x, y)
85
85
86
86
n = len (grid)
87
- dirs = (( 0 , 1 ), ( 0 , - 1 ), ( 1 , 0 ), ( - 1 , 0 ) )
87
+ dirs = (- 1 , 0 , 1 , 0 , - 1 )
88
88
q = deque()
89
89
i, j = next ((i, j) for i in range (n) for j in range (n) if grid[i][j])
90
90
dfs(i, j)
91
91
ans = 0
92
92
while 1 :
93
93
for _ in range (len (q)):
94
94
i, j = q.popleft()
95
- for a, b in dirs:
95
+ for a, b in pairwise( dirs) :
96
96
x, y = i + a, j + b
97
97
if 0 <= x < n and 0 <= y < n:
98
98
if grid[x][y] == 1 :
@@ -163,15 +163,13 @@ class Solution {
163
163
### ** C++**
164
164
165
165
``` cpp
166
- using pii = pair<int , int >;
167
-
168
166
class Solution {
169
167
public:
170
168
const static inline vector<int > dirs = {-1, 0, 1, 0, -1};
171
169
172
170
int shortestBridge(vector<vector<int>>& grid) {
173
171
int n = grid.size();
174
- queue<pii > q;
172
+ queue<pair<int, int> > q;
175
173
function<void(int, int)> dfs = [&](int i, int j) {
176
174
grid[i][j] = 2;
177
175
q.emplace(i, j);
@@ -193,11 +191,11 @@ public:
193
191
}
194
192
int ans = 0;
195
193
while (1) {
196
- for (int k = q.size(); k ; --k ) {
194
+ for (int h = q.size(); h ; --h ) {
197
195
auto [ i, j] = q.front();
198
196
q.pop();
199
- for (int h = 0; h < 4; ++h ) {
200
- int x = i + dirs[ h ] , y = j + dirs[ h + 1] ;
197
+ for (int k = 0; k < 4; ++k ) {
198
+ int x = i + dirs[ k ] , y = j + dirs[ k + 1] ;
201
199
if (x >= 0 && x < n && y >= 0 && y < n) {
202
200
if (grid[ x] [ y ] == 1) return ans;
203
201
if (grid[ x] [ y ] == 0) {
@@ -216,7 +214,7 @@ public:
216
214
### ** Go**
217
215
218
216
``` go
219
- func shortestBridge (grid [][]int ) int {
217
+ func shortestBridge (grid [][]int ) ( ans int ) {
220
218
n := len (grid)
221
219
dirs := []int {-1 , 0 , 1 , 0 , -1 }
222
220
type pair struct { i, j int }
@@ -241,7 +239,6 @@ func shortestBridge(grid [][]int) int {
241
239
}
242
240
}
243
241
}
244
- ans := 0
245
242
for {
246
243
for i := len (q); i > 0 ; i-- {
247
244
p := q[0 ]
@@ -250,7 +247,7 @@ func shortestBridge(grid [][]int) int {
250
247
x , y := p.i +dirs[k], p.j +dirs[k+1 ]
251
248
if x >= 0 && x < n && y >= 0 && y < n {
252
249
if grid[x][y] == 1 {
253
- return ans
250
+ return
254
251
}
255
252
if grid[x][y] == 0 {
256
253
grid[x][y] = 2
0 commit comments