permutations_ii

2022-12-14 浏览 (760)

permutations_ii.go 源码

package main

import "sort"

//全排列II

func permuteUnique(nums []int) [][]int {
	sort.Ints(nums)
	var res [][]int
	var data []int
	visited := make([]bool, len(nums))
	permuteUniqueHelper(nums, visited, data, &res)
	return res
}

func permuteUniqueHelper(nums []int, visited []bool, data []int, res *[][]int) {
	if len(data) == len(nums) {
		temp := make([]int, len(nums))
		copy(temp, data)
		*res = append(*res, temp)
		return
	}

	for i, v := range nums {
		if (i > 0 && nums[i] == nums[i-1] && !visited[i-1]) || visited[i] {
			continue
		}
		data = append(data, v)
		visited[i] = true
		permuteUniqueHelper(nums, visited, data, res)
		visited[i] = false
		data = data[:len(data)-1]
	}
}

你可能感兴趣的文章

bst_lowest_commona_ancestor

combinations

generate_parentheses

  • 所属分类: 后端技术
  • 本文标签: 技术
  • 版权声明: 本文链接 https://seaxiang.com/blog/93c58bfad2b84045abac1ca7419cdda9