130. 被围绕的区域
-
解题思路:通常想法是,把哪些'O'变成'X',这种想法很难做。一个比较简单点是,「哪些'O'不能变成'X'」。其实就是与第一行,最后一行,第一列,最后一列,「相邻的这些」'O',不能变成'X',其他的都能变成' X'.
- 具体来说,把第一行、最后一行、第一列、最后一列的'O',通过「感染」函数,变成'1'
- 然后遍历一遍,'1'就是不能变成'X',其他的全部都变成'X'
-
代码
class Solution: def process(self, board: List[List[str]], i: int, j: int) -> None: if i < 0 or i >= len(board) or j < 0 or j >= len(board[0]) or board[i][j] != 'O': return board[i][j] = '1' self.process(board, i - 1, j) self.process(board, i + 1, j) self.process(board, i, j - 1) self.process(board, i, j + 1) def solve(self, board: List[List[str]]) -> None: if not board: return m, n = len(board), len(board[0]) for i in range(m): self.process(board, i, 0) self.process(board, i, n - 1) for j in range(n): self.process(board, 0, j) self.process(board, m - 1, j) for i in range(m): for j in range(n): if board[i][j] == '1': board[i][j] = 'O' else: board[i][j] = 'X'
标签:
leetcode刷题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理