题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
package main /** * * @param num int整型一维数组 * @return int整型二维数组 */ func permute(nums []int) [][]int { res := [][]int{} length := len(nums) if length == 0 { return res } path := []int{} used := make([]bool, length) dfs(nums, length, 0, &path, &used, &res) return res } func dfs(nums []int, length, depth int, path *[]int, used *[]bool, res *[][]int) { if length == depth { temp := []int{} temp = append(temp, *path...) *res = append(*res, temp) } for i := 0; i < length; i++ { if (*used)[i] { continue } *path = append(*path, nums[i]) (*used)[i] = true dfs(nums, length, depth+1, path, used, res) *path = (*path)[:len(*path)-1] (*used)[i] = false } }