Skip to content

Commit a3812cb

Browse files
committed
update
1 parent 79d5a51 commit a3812cb

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

27. 子集.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
***给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。***
2+
3+
```
4+
输入:nums = [1,2,3]
5+
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
6+
```
7+
8+
```
9+
class Solution:
10+
def subsets(self, nums: List[int]) -> List[List[int]]:
11+
n = len(nums)
12+
res = []
13+
#将要遍历的数组中元素索引
14+
ind = 0
15+
#当前组合
16+
cur = []
17+
#构造递归
18+
def dfs(ind, cur):
19+
#递归终止条件
20+
if ind == n:
21+
res.append(cur)
22+
return
23+
#情况1
24+
dfs(ind+1, cur+[nums[ind]])
25+
#情况2
26+
dfs(ind+1, cur)
27+
#调用递归
28+
dfs(ind, cur)
29+
#返回要优化的目标
30+
return res
31+
```

28. 单词搜索.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
***给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。***
2+
3+
![algo11](./images/algo11.jpg)
4+
5+
```
6+
输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
7+
输出:true
8+
```
9+
10+
```
11+
class Solution:
12+
def exist(self, board: List[List[str]], word: str) -> bool:
13+
length = len(word)
14+
m = len(board)
15+
n = len(board[0])
16+
#将要遍历的字符串索引
17+
ind = 0
18+
#已经走过的网格坐标
19+
parsed = []
20+
#构造递归
21+
def dfs(word_ind, i, j, parsed):
22+
#递归终止条件
23+
if word_ind == length:
24+
return True
25+
for direct in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
26+
cur_i = i + direct[0]
27+
cur_j = j + direct[1]
28+
if 0<=cur_i<m and 0<=cur_j<n and board[cur_i][cur_j] == word[word_ind] and [cur_i, cur_j] not in parsed:
29+
parsed.append([cur_i, cur_j])
30+
flag = dfs(word_ind+1, cur_i, cur_j, parsed)
31+
if flag:
32+
return True
33+
else:
34+
parsed.remove([cur_i, cur_j])
35+
#调用递归
36+
for i in range(m):
37+
for j in range(n):
38+
if board[i][j] == word[0]:
39+
parsed.append([i,j])
40+
flag = dfs(ind+1, i, j, parsed)
41+
if flag:
42+
return True
43+
else:
44+
parsed.remove([i,j])
45+
return False
46+
```

images/algo11.jpg

15.1 KB
Loading

0 commit comments

Comments
 (0)