Skip to content

Commit e9ed52c

Browse files
committed
添加题46,47
1 parent 60e26e3 commit e9ed52c

File tree

1 file changed

+79
-1
lines changed

1 file changed

+79
-1
lines changed

‎算法思维/回溯法.md‎

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,82 @@ function helper(i: number, nums: number[], res: number[][], tmp: number[]): void
6868

6969
##### [46. 全排列](https://leetcode-cn.com/problems/permutations/)
7070

71-
给定一个不含重复数字的数组 `nums` ,返回其 **所有可能的全排列** 。你可以 **按任意顺序** 返回答案。
71+
给定一个不含重复数字的数组 `nums` ,返回其 **所有可能的全排列** 。你可以 **按任意顺序** 返回答案。
72+
73+
```tsx
74+
function permute(nums:number[]):number[][]{
75+
const res:number[][] = []
76+
const templist:number[] = []
77+
const visited:boolean[] =newArray(nums.length).fill(false)
78+
backTrack(nums, res, templist, visited)
79+
returnres
80+
};
81+
82+
function backTrack(nums, res, templist, visited){
83+
if (templist.length===nums.length){
84+
res.push([].concat(templist))
85+
return
86+
}
87+
for (let i =0; i<nums.length; i++){
88+
if (visited[i]){
89+
continue
90+
}
91+
templist.push(nums[i])
92+
visited[i] =true
93+
backTrack(nums, res, templist, visited)
94+
visited[i] =false
95+
templist.pop(nums[i])
96+
}
97+
}
98+
```
99+
100+
##### [47. 全排列 II](https://leetcode-cn.com/problems/permutations-ii/)
101+
102+
给定一个可包含重复数字的序列 `nums`**按任意顺序** 返回所有不重复的全排列。
103+
104+
```tsx
105+
function permuteUnique(nums:number[]):number[][]{
106+
nums=nums.sort((a, b) =>a-b)
107+
const res:number[][] = []
108+
const templist:number[] = []
109+
const visited:boolean[] =newArray(nums.length).fill(false)
110+
backTrack(nums, res, templist, visited)
111+
returnres
112+
};
113+
114+
function backTrack(nums, res, templist, visited){
115+
if (templist.length===nums.length){
116+
res.push([].concat(templist))
117+
return
118+
}
119+
for (let i =0; i<nums.length; i++){
120+
if (visited[i]){
121+
continue
122+
}
123+
if (i>0&&nums[i] ===nums[i-1] &&!visited[i-1]){
124+
continue
125+
}
126+
templist.push(nums[i])
127+
visited[i] =true
128+
backTrack(nums, res, templist, visited)
129+
visited[i] =false
130+
templist.pop(nums[i])
131+
}
132+
}
133+
```
134+
135+
## 练习
136+
137+
-[subsets](https://leetcode-cn.com/problems/subsets/)
138+
-[subsets-ii](https://leetcode-cn.com/problems/subsets-ii/)
139+
-[permutations](https://leetcode-cn.com/problems/permutations/)
140+
-[permutations-ii](https://leetcode-cn.com/problems/permutations-ii/)
141+
142+
挑战题目
143+
144+
-[combination-sum](https://leetcode-cn.com/problems/combination-sum/)
145+
-[letter-combinations-of-a-phone-number](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/)
146+
-[palindrome-partitioning](https://leetcode-cn.com/problems/palindrome-partitioning/)
147+
-[restore-ip-addresses](https://leetcode-cn.com/problems/restore-ip-addresses/)
148+
-[permutations](https://leetcode-cn.com/problems/permutations/)
149+

0 commit comments

Comments
(0)