Update 0046.全排列.md

This commit is contained in:
hitorig
2021-08-06 17:43:34 +08:00
committed by GitHub
parent dc11080a98
commit 1ae78a86ca

View File

@ -227,24 +227,27 @@ class Solution:
Go Go
```Go ```Go
var result [][]int var res [][]int
func backtrack(nums,pathNums []int,used []bool){ func permute(nums []int) [][]int {
if len(nums)==len(pathNums){ res = [][]int{}
tmp:=make([]int,len(nums)) backTrack(nums,len(nums),[]int{})
copy(tmp,pathNums) return res
result=append(result,tmp) }
//result=append(result,pathNums) func backTrack(nums []int,numsLen int,path []int) {
return if len(nums)==0{
} p:=make([]int,len(path))
for i:=0;i<len(nums);i++{ copy(p,path)
if !used[i]{ res = append(res,p)
used[i]=true }
pathNums=append(pathNums,nums[i]) for i:=0;i<numsLen;i++{
backtrack(nums,pathNums,used) cur:=nums[i]
pathNums=pathNums[:len(pathNums)-1] path = append(path,cur)
used[i]=false nums = append(nums[:i],nums[i+1:]...)//直接使用切片
} backTrack(nums,len(nums),path)
} nums = append(nums[:i],append([]int{cur},nums[i:]...)...)//回溯的时候切片也要复原,元素位置不能变
path = path[:len(path)-1]
}
} }
``` ```