这是一道 「中等难度」 的题
https://leetcode.cn/problems/permutations/

题目

给定一个不含重复数字的数组 ,返回其 「所有可能的全排列」 。你可以 「按任意顺序」 返回答案。

示例 1:

var (
    ans [][]int
    selectedVal []int
    selectedIndex []bool
)


func permute(nums []int) [][]int {
    
    ans = make([][]int0)
    selectedVal = make([]int0)
    selectedIndex = make([]boollen(nums))

    recursion(nums)
    return ans
}

func recursion(nums []int) {
    if len(selectedVal) == len(nums) {
        temp := make([]intlen(selectedVal))
        copy(temp, selectedVal)
        ans = append(ans, temp)
        return
    }

    for i, v :=  range nums{
        if selectedIndex[i]{
            continue
        }

        selectedIndex[i] = true
        selectedVal = append(selectedVal, v)
        recursion(nums)
        selectedIndex[i] = false;
        selectedVal = selectedVal[:len(selectedVal) - 1]
    }
}

相关题目

可以使用递归解法的其他题目还有:


- End -




本篇文章来源于微信公众号: i余数



微信扫描下方的二维码阅读本文

此作者没有提供个人介绍
最后更新于 2023-06-19