47.全排列2

leetcode

深度优先搜索

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var ans [][]int



func permuteUnique(nums []int) [][]int {

sort.Ints(nums)

used := make([]bool, len(nums))

arr := []int{}

ans = [][]int{}



dfs(nums, used, arr)

return ans

}



func dfs(nums []int, used []bool, arr []int) {

if len(arr) == len(nums) {

ans = append(ans, append([]int{}, arr...))

return

}



for i := 0; i < len(nums); i++ {

if used[i] {

continue

}



// 上一个元素如果和当前元素相同且没使用过,则跳过当前元素,防止重复

if i > 0 && nums[i] == nums[i-1] && !used[i-1] {

continue

}



arr = append(arr, nums[i])

used[i] = true

dfs(nums, used, arr)

used[i] = false

arr = arr[:len(arr)-1]

}

}

47.全排列2
https://blog.jerrylee.me/2021/09/a1637c359464.html
作者
Jerry Lee
发布于
2021年9月20日
许可协议