题解 | #没有重复项数字的全排列#

没有重复项数字的全排列

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
	}
}

全部评论

相关推荐

点赞 评论 收藏
分享
03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务