Skip to content

Commit 8fc5dd7

Browse files
authored
Update 46.permutations.md
1 parent 351fa0b commit 8fc5dd7

File tree

1 file changed

+8
-34
lines changed

1 file changed

+8
-34
lines changed

problems/46.permutations.md

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ https://leetcode-cn.com/problems/permutations/
5252

5353
[1,1,2] 为例,我们的逻辑是:
5454

55-
- 先从 [1,1,2] 选取一个数
55+
- 先从 [1,1,2] 选取一个数
5656
- 然后继续从 [1,1,2] 选取一个数,并且这个数不能是已经选取过的数。
57-
- 重复这个过程直到选取的数字达到了 3
57+
- 重复这个过程直到选取的数字达到了 3
5858

5959
## 关键点解析
6060

@@ -90,32 +90,6 @@ var permute = function (nums) {
9090

9191
Python3 Code:
9292

93-
```Python
94-
class Solution:
95-
def permute(self, nums: List[int]) -> List[List[int]]:
96-
"""itertools库内置了这个函数"""
97-
return itertools.permutations(nums)
98-
99-
def permute2(self, nums: List[int]) -> List[List[int]]:
100-
"""自己写回溯法"""
101-
res = []
102-
def _backtrace(nums, pre_list):
103-
if len(nums) <= 0:
104-
res.append(pre_list)
105-
else:
106-
for i in nums:
107-
# 注意copy一份新的调用,否则无法正常循环
108-
p_list = pre_list.copy()
109-
p_list.append(i)
110-
left_nums = nums.copy()
111-
left_nums.remove(i)
112-
_backtrace(left_nums, p_list)
113-
_backtrace(nums, [])
114-
return res
115-
```
116-
117-
Python Code:
118-
11993
```Python
12094
class Solution:
12195
def permute(self, nums: List[int]) -> List[List[int]]:
@@ -126,7 +100,7 @@ class Solution:
126100
def permute2(self, nums: List[int]) -> List[List[int]]:
127101
"""自己写回溯法"""
128102
res = []
129-
def _backtrace(nums, pre_list):
103+
def backtrack(nums, pre_list):
130104
if len(nums) <= 0:
131105
res.append(pre_list)
132106
else:
@@ -136,23 +110,23 @@ class Solution:
136110
p_list.append(i)
137111
left_nums = nums.copy()
138112
left_nums.remove(i)
139-
_backtrace(left_nums, p_list)
140-
_backtrace(nums, [])
113+
backtrack(left_nums, p_list)
114+
backtrack(nums, [])
141115
return res
142116

143117
def permute3(self, nums: List[int]) -> List[List[int]]:
144118
"""回溯的另一种写法"""
145119
res = []
146120
length = len(nums)
147-
def _backtrack(start=0):
121+
def backtrack(start=0):
148122
if start == length:
149123
# nums[:] 返回 nums 的一个副本,指向新的引用,这样后续的操作不会影响已经已知解
150124
res.append(nums[:])
151125
for i in range(start, length):
152126
nums[start], nums[i] = nums[i], nums[start]
153-
_backtrack(start+1)
127+
backtrack(start+1)
154128
nums[start], nums[i] = nums[i], nums[start]
155-
_backtrack()
129+
backtrack()
156130
return res
157131
```
158132

0 commit comments

Comments
 (0)