@@ -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 [] = new Array (nums .length ).fill (false )
78+ backTrack (nums , res , templist , visited )
79+ return res
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 [] = new Array (nums .length ).fill (false )
110+ backTrack (nums , res , templist , visited )
111+ return res
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