[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,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!
评论