46. 全排列

图片.png

  1. var mark []int
  2. var n int
  3. func permute(nums []int) [][]int {
  4. n =len(nums)
  5. res:= make([][]int,0)
  6. if n<=0{
  7. return res
  8. }
  9. mark = make([]int,n)
  10. path :=make([]int,0)
  11. dfs(nums,path,&res)
  12. return res
  13. }
  14. func dfs(nums[]int,path[]int,res*[][]int) {
  15. if len(path)==n {
  16. tmp := make([]int,n)
  17. copy(tmp,path)
  18. *res =append(*res,tmp)
  19. return
  20. }
  21. for i :=0;i<n;i++{
  22. if mark[i]==1 {//减掉枝叶
  23. continue
  24. }
  25. path = append(path,nums[i])
  26. mark[i]=1
  27. dfs(nums,path,res)
  28. path = path[:len(path)-1]
  29. mark[i]=0
  30. }
  31. }