[Day41]-[回溯]- 全排列
作者:方勇(gopher)
- 2022 年 5 月 18 日
本文字数:520 字
阅读完需:约 2 分钟
46. 全排列
给定一个不含重复数字的数组
nums,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
复制代码
示例 2:
输入:nums = [0,1]输出:[[0,1],[1,0]]
复制代码
示例 3:
输入:nums = [1]输出:[[1]]复制代码
题解:
func TestPermute(t *testing.T) { var res [][]int var permute func(nums []int) [][]int var backTrack func(nums []int, track []int) var isSet func(trace []int, target int) bool isSet = func(trace []int, target int) bool { for _, val := range trace { if target == val { return true } } return false
} backTrack = func(nums []int, track []int) { if len(track) == len(nums) { res = append(res, append([]int{}, track...)) return } for i := 0; i < len(nums); i++ { if false == isSet(track, nums[i]) { track = append(track, nums[i]) backTrack(nums, track) track = track[:len(track)-1] } } } permute = func(nums []int) [][]int { backTrack(nums, []int{}) return res } permute([]int{1, 2, 3}) t.Log(res)}复制代码
划线
评论
复制
发布于: 刚刚阅读数: 2
方勇(gopher)
关注
Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入
我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!










评论