zoukankan      html  css  js  c++  java
  • 0047全排列II Marathon

    给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

    示例 1:

    输入:nums = [1,1,2]
    输出:
    [[1,1,2],
    [1,2,1],
    [2,1,1]]
    示例 2:

    输入:nums = [1,2,3]
    输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

    提示:

    1 <= nums.length <= 8
    -10 <= nums[i] <= 10

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/permutations-ii

    参考:

    python

    # 0047.全排列II
    
    class Solution:
        def permuteUnique(self, nums: [int]) -> [[int]]:
            if not nums:
                return []
            res = []
            used = [0] * len(nums)
    
            def track(nums, used, path):
                if len(path) == len(nums):
                    res.append(path.copy())
                    return
                for i in range(len(nums)):
                    if not used[i]:
                        if i > 0 and nums[i] == nums[i-1] and not used[i-1]:
                            continue
                        used[i] = 1
                        path.append(nums[i])
                        track(nums, used, path)
                        path.pop()
                        used[i] = 0
    
            nums = sorted(nums)
            track(nums, used, [])
            return res
    

    golang

    package backTrack
    
    var res [][]int
    func permuteUnique(nums []int) [][]int {
    	res = [][]int{}
    	backTrack(nums,len(nums),[]int{})
    	return res
    }
    func backTrack(nums []int,numsLen int,path []int)  {
    	if len(nums)==0{
    		p:=make([]int,len(path))
    		copy(p,path)
    		res = append(res,p)
    	}
    	used := [21]int{}//跟前一题唯一的区别,同一层不使用重复的数。关于used的思想carl在递增子序列那一题中提到过
    	for i:=0;i<numsLen;i++{
    		if used[nums[i]+10]==1{
    			continue
    		}
    		cur:=nums[i]
    		path = append(path,cur)
    		used[nums[i]+10]=1
    		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]
    	}
    }
    
  • 相关阅读:
    sqlsever2008及以上各个安装包的说明
    解决 windows2012 下无法安装 sql2008R2
    dapper extensions (predicates)
    Dapper full example
    Dapper.ColumnMapper 的使用
    wms
    大端格式 与 小端格式
    mysql数据库引擎
    事务
    MySQL索引底层实现
  • 原文地址:https://www.cnblogs.com/davis12/p/15590473.html
Copyright © 2011-2022 走看看