Leetcode刷题(permutations ii)golang

import (
    "sort"
)
var results [][]int
var note int
func permuteUnique(nums []int) [][]int {
    results = nil
    note = -1
    sort.Ints(nums)
    var res []int
    var positions = make(map[int]int, len(nums))
    traversal(res, nums, positions)
    return results
}

func traversal(res, nums []int, positions map[int]int){
    if len(res)==len(nums){
        // fmt.Println(res)
        results = append(results, res)
        return
    }
    for i := 0; i<len(nums); i++{
        if _, ok := positions[i]; ok||(note>=0&&nums[note]==nums[i]){
            continue
        }
        note = -1
        cp := make([]int, len(res))
        copy(cp, res)
        cp = append(cp, nums[i])
        positions[i] = i
        traversal(cp, nums, positions)
        delete(positions, i)
        note = i
    } 
}

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝/微信扫一扫,即可进行扫码打赏哦