Skip to content

Commit 12ae897

Browse files
committed
Fixed sonar
1 parent c15d9fe commit 12ae897

File tree

2 files changed

+54
-26
lines changed
  • src/main/java/g3501_3600

2 files changed

+54
-26
lines changed

src/main/java/g3501_3600/s3552_grid_teleportation_traversal/Solution.java

+53-24
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package g3501_3600.s3552_grid_teleportation_traversal;
22

3-
// #Medium #2025_05_18_Time_133_ms_(99.44%)_Space_60.94_MB_(99.44%)
3+
// #Medium #2025_05_18_Time_139_ms_(99.44%)_Space_61.40_MB_(98.89%)
44

55
import java.util.ArrayList;
66
import java.util.LinkedList;
@@ -11,14 +11,7 @@
1111
public class Solution {
1212
private static final int[][] ADJACENT = new int[][] {{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
1313

14-
public int minMoves(String[] matrix) {
15-
int m = matrix.length;
16-
int n = matrix[0].length();
17-
if ((m == 1 && n == 1)
18-
|| (matrix[0].charAt(0) != '.'
19-
&& matrix[m - 1].charAt(n - 1) == matrix[0].charAt(0))) {
20-
return 0;
21-
}
14+
private List<int[]>[] initializePortals(int m, int n, String[] matrix) {
2215
List<int[]>[] portalsToPositions = new ArrayList[26];
2316
for (int i = 0; i < 26; i++) {
2417
portalsToPositions[i] = new ArrayList<>();
@@ -31,8 +24,14 @@ public int minMoves(String[] matrix) {
3124
}
3225
}
3326
}
34-
boolean[][] visited = new boolean[m][n];
35-
Queue<int[]> queue = new LinkedList<>();
27+
return portalsToPositions;
28+
}
29+
30+
private void initializeQueue(
31+
Queue<int[]> queue,
32+
boolean[][] visited,
33+
String[] matrix,
34+
List<int[]>[] portalsToPositions) {
3635
if (matrix[0].charAt(0) != '.') {
3736
int idx = matrix[0].charAt(0) - 'A';
3837
for (int[] pos : portalsToPositions[idx]) {
@@ -43,6 +42,46 @@ public int minMoves(String[] matrix) {
4342
queue.offer(new int[] {0, 0});
4443
}
4544
visited[0][0] = true;
45+
}
46+
47+
private boolean isValidMove(int r, int c, int m, int n, boolean[][] visited, String[] matrix) {
48+
return !(r < 0 || r == m || c < 0 || c == n || visited[r][c] || matrix[r].charAt(c) == '#');
49+
}
50+
51+
private boolean processPortal(
52+
int r,
53+
int c,
54+
int m,
55+
int n,
56+
Queue<int[]> queue,
57+
boolean[][] visited,
58+
String[] matrix,
59+
List<int[]>[] portalsToPositions) {
60+
int idx = matrix[r].charAt(c) - 'A';
61+
for (int[] pos : portalsToPositions[idx]) {
62+
if (pos[0] == m - 1 && pos[1] == n - 1) {
63+
return true;
64+
}
65+
queue.offer(pos);
66+
visited[pos[0]][pos[1]] = true;
67+
}
68+
return false;
69+
}
70+
71+
public int minMoves(String[] matrix) {
72+
int m = matrix.length;
73+
int n = matrix[0].length();
74+
if ((m == 1 && n == 1)
75+
|| (matrix[0].charAt(0) != '.'
76+
&& matrix[m - 1].charAt(n - 1) == matrix[0].charAt(0))) {
77+
return 0;
78+
}
79+
80+
List<int[]>[] portalsToPositions = initializePortals(m, n, matrix);
81+
boolean[][] visited = new boolean[m][n];
82+
Queue<int[]> queue = new LinkedList<>();
83+
initializeQueue(queue, visited, matrix, portalsToPositions);
84+
4685
int moves = 0;
4786
while (!queue.isEmpty()) {
4887
int sz = queue.size();
@@ -51,22 +90,12 @@ public int minMoves(String[] matrix) {
5190
for (int[] adj : ADJACENT) {
5291
int r = adj[0] + curr[0];
5392
int c = adj[1] + curr[1];
54-
if (r < 0
55-
|| r == m
56-
|| c < 0
57-
|| c == n
58-
|| visited[r][c]
59-
|| matrix[r].charAt(c) == '#') {
93+
if (!isValidMove(r, c, m, n, visited, matrix)) {
6094
continue;
6195
}
6296
if (matrix[r].charAt(c) != '.') {
63-
int idx = matrix[r].charAt(c) - 'A';
64-
for (int[] pos : portalsToPositions[idx]) {
65-
if (pos[0] == m - 1 && pos[1] == n - 1) {
66-
return moves + 1;
67-
}
68-
queue.offer(pos);
69-
visited[pos[0]][pos[1]] = true;
97+
if (processPortal(r, c, m, n, queue, visited, matrix, portalsToPositions)) {
98+
return moves + 1;
7099
}
71100
} else {
72101
if (r == m - 1 && c == n - 1) {

src/main/java/g3501_3600/s3553_minimum_weighted_subgraph_with_the_required_paths_ii/Solution.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
@SuppressWarnings("unchecked")
1010
public class Solution {
11-
private int p;
1211
private List<int[]>[] graph;
1312
private int[] euler;
1413
private int[] depth;
@@ -18,7 +17,7 @@ public class Solution {
1817
private long[] dists;
1918

2019
public int[] minimumWeight(int[][] edges, int[][] queries) {
21-
p = 0;
20+
int p = 0;
2221
for (int[] e : edges) {
2322
p = Math.max(p, Math.max(e[0], e[1]));
2423
}

0 commit comments

Comments
 (0)