LeetCode22. 括号生成
1 | class Solution(object): |
LeetCode37 解数独
编写一个程序,通过已填充的空格来解决数独问题。
一个数独的解法需遵循如下规则:
- 数字 1-9 在每一行只能出现一次。
- 数字 1-9 在每一列只能出现一次。
- 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
Note:
- 给定的数独序列只包含数字 1-9 和字符 ‘.’ 。
- 你可以假设给定的数独只有唯一解。
- 给定数独永远是 9x9 形式的。
1 | class Solution(object): |
LeetCode51. N皇后
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
1 | class Solution(object): |
LeetCode51. N皇后2
1 | class Solution(object): |
LeetCode79. 单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 class Solution:
def exist(self, board, word):
"""
:type board: List[List[str]]
:type word: str
:rtype: bool
"""
m = len(board)
if m == 0:
if word:
return False
else:
return True
n = len(board[0])
has_visit = [[False]*n for i in range(m)]
for i in range(m):
for j in range(n):
if self.search(board,word,i,j,has_visit,0,m,n):
return True
return False
def search(self,board,word,i,j,has_visit,k,m,n):
if k == len(word):
return True
is_word = False
if 0<=i<m and 0<=j<n and not has_visit[i][j] and board[i][j] == word[k]:
has_visit[i][j] = True
is_word = self.search(board,word,i+1,j,has_visit,k+1,m,n) or self.search(board,word,i-1,j,has_visit,k+1,m,n) \
or self.search(board,word,i,j+1,has_visit,k+1,m,n) or self.search(board,word,i,j-1,has_visit,k+1,m,n)
has_visit[i][j] = False
return is_word
LeetCode131. 分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
1 | class Solution(object): |