mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Update 0046.全排列.md
This commit is contained in:
@ -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]
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
Reference in New Issue
Block a user