237 words
1 minute
日拱两卒(五)
2026-07-23

60#

单词搜索。

在一个二维矩阵里找单词,简单搜索。

class Solution:
def exist(self, board: List[List[str]], word: str) -> bool:
n = len(board)
m = len(board[0])
st = [[False for _ in range (m)] for _ in range (n)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(x, y, u) -> bool:
if word[u] != board[x][y]:
return False
if u == len(word) - 1:
return True
st[x][y] = True
ok = False
for i in range(4):
tx = x + dx[i]
ty = y + dy[i]
if tx < 0 or tx >= n or ty < 0 or ty >= m:
continue
if st[tx][ty]:
continue
ok |= dfs(tx, ty, u + 1)
st[x][y] = False
return ok
for i in range(n):
for j in range(m):
if dfs(i, j, 0):
return True
return False

59#

括号生成。

生成合法括号序列,简单搜索。

class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []
s = ['.' for _ in range (2 * n)]
def dfs(u, left, right):
if u == 2 * n:
ans.append(''.join(s))
return
if left < n:
s[u] = '('
dfs(u + 1, left + 1, right)
s[u] = '.'
if right < left:
s[u] = ')'
dfs(u + 1, left, right + 1)
s[u] = '.'
dfs(0, 0, 0)
return ans