题解 | #有重复项数字的全排列#

有重复项数字的全排列

https://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863

func permuteUnique( num []int ) [][]int {
    // write code here
    if len(num)==0{
        return [][]int{}
    }
    sort.Ints(num)
    ans := [][]int{}
    path := []int{}
    used := make([]bool, len(num))
    var dfs func(num, path []int, used []bool)
    dfs = func(num, path []int, used []bool){
        if len(num)==len(path){
            temp := make([]int, len(num))
            copy(temp, path)
            ans = append(ans, temp)
        }
        for i:=0;i<len(num);i++{
            if used[i]{
                continue
            }
            if i>0 && num[i-1]==num[i] && !used[i-1]{
                continue
            }
            used[i] = true
            path = append(path, num[i])
            dfs(num, path, used)
            used[i] = false
            path = path[:len(path)-1]
        }
    }
    dfs(num, path, used)
    return ans
}

全部评论

相关推荐

03-21 08:46
已编辑
门头沟学院 C++
只写bug的程序媛:本科能找到好的,真不建议读研,提前占坑比较好,本科找不到好的,也不建议读研,因为两三年之后压力只会更大,唯一的解就是行业好起来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务