golang力扣leetcode 47.全排列II

简介: golang力扣leetcode 47.全排列II

47.全排列II

47.全排列II

题解

上一个元素和当前相同,并且没有访问过就跳过

代码

package main
import "sort"
func permuteUnique(nums []int) [][]int {
  result := make([][]int, 0)
  list := make([]int, 0)
  vis := make([]bool, len(nums))
  sort.Ints(nums)
  backtrack(nums, vis, list, &result)
  return result
}
func backtrack(nums []int, vis []bool, list []int, result *[][]int) {
  if len(list) == len(nums) {
    ans := make([]int, len(list))
    copy(ans, list)
    *result = append(*result, ans)
  }
  for i := 0; i < len(nums); i++ {
    if vis[i] == false {
      if i != 0 && nums[i] == nums[i-1] && vis[i-1] == false {
        continue
      }
      vis[i] = true
      list = append(list, nums[i])
      backtrack(nums, vis, list, result)
      list = list[0 : len(list)-1]
      vis[i] = false
    }
  }
}
目录
相关文章
|
18天前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
19天前
|
机器学习/深度学习 存储 算法
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
|
15天前
|
算法
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
|
18天前
|
算法 数据可视化 数据挖掘
最佳加油站选择算法:解决环路加油问题的两种高效方法|LeetCode力扣134
最佳加油站选择算法:解决环路加油问题的两种高效方法|LeetCode力扣134
|
18天前
|
存储 算法 数据可视化
LeetCode 力扣题目:买卖股票的最佳时机 IV
LeetCode 力扣题目:买卖股票的最佳时机 IV
|
18天前
|
存储 算法 数据可视化
LeetCode 力扣题目:买卖股票的最佳时机 III
LeetCode 力扣题目:买卖股票的最佳时机 III
|
18天前
|
存储 缓存 算法
LeetCode力扣题目111:多种算法对比实现二叉树的最小深度
LeetCode力扣题目111:多种算法对比实现二叉树的最小深度
|
19天前
|
存储 机器学习/深度学习 算法
python 3种算法 回溯法、字典序生成、递归交换 实现全排列【力扣46题】
python 3种算法 回溯法、字典序生成、递归交换 实现全排列【力扣46题】
|
23天前
|
算法 Java Go
【经典算法】LeetCode 35. 搜索插入位置(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 35. 搜索插入位置(Java/C/Python3/Golang实现含注释说明,Easy)
9 0
|
14天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题