Lintcode 477. Surrounded Regions (Medium) (Python)

Surrounded Regions

Description:

Given a 2D board containing ‘X’ and ‘O’, capture all regions surrounded by ‘X’.

A region is captured by flipping all ‘O”s into ‘X”s in that surrounded region.

Example
X X X X
X O O X
X X O X
X O X X
After capture all regions surrounded by ‘X’, the board should be:

X X X X
X X X X
X X X X
X O X X

Code:

class Solution:
    """
    @param: board: board a 2D board containing 'X' and 'O'
    @return: nothing
    """
    def surroundedRegions(self, board):
        # write your code here
        if not board:
            return board
        def switch(x, y):
            board[x][y] = 'A'
            if x!=0 and board[x-1][y]=='O':
                switch(x-1, y)
            if x!=lx-1 and board[x+1][y]=='O':
                switch(x+1, y)
            if y!=0 and board[x][y-1]=='O':
                switch(x, y-1)
            if y!=ly-1 and board[x][y+1]=='O':
                switch(x, y+1)

        lx = len(board)
        ly = len(board[0])
        for i in range(ly):
            if board[0][i]=='O':
                switch(0, i)
            if board[lx-1][i]=='O':
                switch(lx-1, i)
        for i in range(lx):
            if board[i][0]=='O':
                switch(i, 0)
            if board[i][ly-1]=='O':
                switch(i, ly-1)

        for i in range(lx):
            for j in range(ly):
                if board[i][j]=='O':
                    board[i][j]='X'
                if board[i][j]=='A':
                    board[i][j]='O'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值