@@ -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
9191Python3 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
12094class 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