130. Surrounded Regions
X X X X
X O O X
X X O X
X O X XX X X X
X X X X
X X X X
X O X X解题要点:
class Solution(object):
def solve(self, board):
"""
:type board: List[List[str]]
:rtype: None Do not return anything, modify board in-place instead.
"""
if board == None or len(board) == 0:
return
n = len(board)
m = len(board[0])
def search(board, i, j):
queue = [(i, j)]
while queue:
r, c = queue.pop(0)
if r - 1 >= 0 and board[r-1][c] == 'O':
board[r-1][c] = '#'
queue.append((r-1,c))
if r + 1 < n and board[r+1][c] == 'O':
board[r+1][c] = '#'
queue.append((r+1,c))
if c - 1 >= 0 and board[r][c-1] == 'O':
board[r][c-1] = '#'
queue.append((r,c-1))
if c + 1 < m and board[r][c+1] == 'O':
board[r][c+1] = '#'
queue.append((r,c+1))
for i in range(n):
for j in range(m):
if i == 0 and board[i][j] == 'O':
board[i][j] = '#'
search(board, i, j)
if i == n-1 and board[i][j] == 'O':
board[i][j] = '#'
search(board, i, j)
if i > 0 and i < n-1 and j == 0 and board[i][j] == 'O':
board[i][j] = '#'
search(board, i, j)
if i > 0 and i < n-1 and j == m-1 and board[i][j] == 'O':
board[i][j] = '#'
search(board, i, j)
for i in range(n):
for j in range(m):
if board[i][j] == 'O':
board[i][j] = 'X'
for i in range(n):
for j in range(m):
if board[i][j] == '#':
board[i][j] = 'O'
Last updated