46. 全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
文章来源:https://www.toymoban.com/news/detail-657142.html
【递归实现】文章来源地址https://www.toymoban.com/news/detail-657142.html
func permute(nums []int) [][]int {
var permutation func([]int, int, int)
r := make([][]int,0)
permutation = func(arr []int, start int, end int) {
if start == end {
target := make([]int, len(arr))
copy(target, arr) //做深拷贝,因为切片是引用类型
r = append(r, target)
} else {
for i := start; i < end; i++ {
swap(arr, start, i)
permutation(arr, start+1, end)
swap(arr, start, i)
}
}
}
permutation(nums, 0, len(nums))
return r
}
func swap(arr []int, a int, b int) {
arr[a], arr[b] = arr[b], arr[a]
}
到了这里,关于LeetCode刷题——46.全排列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!