❝
这是一道 「中等难度」 的题
https://leetcode.cn/problems/permutations/❞
题目
给定一个不含重复数字的数组 ,返回其 「所有可能的全排列」 。你可以 「按任意顺序」 返回答案。
示例 1:
var (
ans [][]int
selectedVal []int
selectedIndex []bool
)
func permute(nums []int) [][]int {
ans = make([][]int, 0)
selectedVal = make([]int, 0)
selectedIndex = make([]bool, len(nums))
recursion(nums)
return ans
}
func recursion(nums []int) {
if len(selectedVal) == len(nums) {
temp := make([]int, len(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余数
微信扫描下方的二维码阅读本文

Comments NOTHING