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 32e7de5

Browse files
committed
feat: add solution for surrounded regions
1 parent 4d7616b commit 32e7de5

File tree

4 files changed

+88
-2
lines changed

4 files changed

+88
-2
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from typing import List
2+
3+
def solve(board: List[List[str]]) -> None:
4+
"""
5+
Do not return anything, modify board in-place instead.
6+
"""
7+
ROWS, COLS = len(board), len(board[0])
8+
def dfs(r, c):
9+
if r < 0 or c < 0 or r == ROWS or c == COLS or board[r][c] != "O":
10+
return
11+
board[r][c] = "#"
12+
dfs(r - 1, c)
13+
dfs(r + 1, c)
14+
dfs(r, c - 1)
15+
dfs(r, c + 1)
16+
17+
for r in range(ROWS):
18+
dfs(r, 0)
19+
dfs(r, COLS - 1)
20+
21+
for c in range(COLS):
22+
dfs(0, c)
23+
dfs(ROWS - 1, c)
24+
25+
for r in range(ROWS):
26+
for c in range(COLS):
27+
if board[r][c] == "#":
28+
board[r][c] = "O"
29+
elif board[r][c] == "O":
30+
board[r][c] = "X"
31+
32+
"""
33+
Algorithm - DFS
34+
Time complexity: O(m*n)
35+
Space complexity: O(m*n) for the call stack
36+
"""
37+
38+
board = [["X","X","X","X"], ["X","O","O","X"], ["X","X","O","X"], ["X","O","X","X"]]
39+
solve(board)
40+
print(board)
41+
assert board == [["X","X","X","X"], ["X","X","X","X"], ["X","X","X","X"], ["X","O","X","X"]]

‎src/medium/surrounded_regions.rs‎

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#![allow(dead_code)]
2+
pub fn solve(board: &mut Vec<Vec<char>>) {
3+
let rows = board.len();
4+
let cols = board[0].len();
5+
6+
fn dfs(board: &mut Vec<Vec<char>>, r: usize, c: usize) {
7+
let rows = board.len();
8+
let cols = board[0].len();
9+
10+
if r >= rows || c >= cols || board[r][c] != 'O' {
11+
return;
12+
}
13+
14+
board[r][c] = '#';
15+
16+
if r > 0 {
17+
dfs(board, r - 1, c);
18+
}
19+
if c > 0 {
20+
dfs(board, r, c - 1);
21+
}
22+
dfs(board, r + 1, c);
23+
dfs(board, r, c + 1);
24+
}
25+
26+
for r in 0..rows {
27+
dfs(board, r, 0);
28+
dfs(board, r, cols - 1);
29+
}
30+
31+
for c in 0..cols {
32+
dfs(board, 0, c);
33+
dfs(board, rows - 1, c);
34+
}
35+
36+
for r in 0..rows {
37+
for c in 0..cols {
38+
if board[r][c] == '#' {
39+
board[r][c] = 'O';
40+
} else if board[r][c] == 'O' {
41+
board[r][c] = 'X';
42+
}
43+
}
44+
}
45+
}

‎src/readme.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
- [x] [102. Binary tree level order traversal](../src/medium/binary_tree_level_order_traversal.rs) -> [Problem Description](../src/medium/readme.md#102-binary-tree-level-order-traversal)
7171
- [x] [105. Construct binary tree from preorder and inorder traversal](../src/medium/construct_binary_tree_from_preorder_and_inorder_traversal.rs) -> [Problem Description](../src/medium/readme.md#105-construct-binary-tree-from-preorder-and-inorder-traversal)
7272
- [x] [128. Longest consecutive sequence](../src/medium/longest_consecutive_sequence.rs) -> [Problem Description](../src/medium/readme.md#128-longest-consecutive-sequence)
73-
- [] [130. Surrounded regions](../src/medium/surrounded_regions.rs) -> [Problem Description](../src/medium/readme.md#130-surrounded-regions)
73+
- [x] [130. Surrounded regions](../src/medium/surrounded_regions.rs) -> [Problem Description](../src/medium/readme.md#130-surrounded-regions)
7474
- [x] [131. Palindrome partitioning](../src/medium/palindrome_partitioning.rs) -> [Problem Description](../src/medium/readme.md#131-palindrome-partitioning)
7575
- [x] [133. Clone graph](../src/medium/clone_graph.rs) -> [Problem Description](../src/medium/readme.md#133-clone-graph)
7676
- [x] [138. Copy list with random pointer PYTHON Solution](../alternative/medium/copy_list_with_random_pointer.py) -> [Problem Description](../src/medium/readme.md#138-copy-list-with-random-pointer)

‎theory/categories/6.graphs/readme.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ A graph can be implemented using an adjacency list or an adjacency matrix.
1919
- [x] [Clone Graph](https://leetcode.com/problems/clone-graph/) | Medium | [Solution](../../../src/medium/clone_graph.rs) | [Problem Description](../../../src/medium/readme.md#133-clone-graph)
2020
- [x] [Max Area of Island](https://leetcode.com/problems/max-area-of-island/) | Medium | [Solution](../../../src/medium/max_area_of_island.rs) | [Problem Description](../../../src/medium/readme.md#695-max-area-of-island)
2121
- [x] [Pacific Atlantic Water Flow](https://leetcode.com/problems/pacific-atlantic-water-flow/) | Medium | [Solution](../../../src/medium/pacific_atlantic_water_flow.rs) | [Problem Description](../../../src/medium/readme.md#417-pacific-atlantic-water-flow)
22-
- [] [Surrounded Regions](https://leetcode.com/problems/surrounded-regions/) | Medium | [Solution](../../../src/medium/surrounded_regions.rs) | [Problem Description](../../../src/medium/readme.md#130-surrounded-regions)
22+
- [x] [Surrounded Regions](https://leetcode.com/problems/surrounded-regions/) | Medium | [Solution](../../../src/medium/surrounded_regions.rs) | [Problem Description](../../../src/medium/readme.md#130-surrounded-regions)
2323
- [ ] [Rotten Oranges](https://leetcode.com/problems/rotting-oranges/) | Medium | [Solution](../../../src/medium/rotten_oranges.rs) | [Problem Description](../../../src/medium/readme.md#994-rotting-oranges)
2424
- [ ] [Walls and Gates](https://leetcode.com/problems/walls-and-gates/) | Medium | [Solution](../../../src/medium/walls_and_gates.rs) | [Problem Description](../../../src/medium/readme.md#286-walls-and-gates)
2525
- [ ] [Course Schedule](https://leetcode.com/problems/course-schedule/) | Medium | [Solution](../../../src/medium/course_schedule.rs) | [Problem Description](../../../src/medium/readme.md#207-course-schedule)

0 commit comments

Comments
(0)

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