LeetCode 热题 HOT 100 第21天:“全排列”

继续刷LeetCode 热题 HOT 100 的题目,并且在博客更新我的solutions。在csdn博客中我会尽量用文字解释清楚,相关Java代码大家可以前往我的个人博客jinhuaiyu.com中查看。
题目:全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例 2:
输入:nums = [0,1]
输出:[[0,1],[1,0]]
示例 3:
输入:nums = [1]
输出:[[1]]
提示:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums 中的所有整数 互不相同
solution:回溯法
这种要列出所有可能的结果的题目,可以用回溯法来搜索。前面已经做过好几题用回溯法了,这道题基本上套个模板就能解决。需要注意的是,每层虽然都是从nums数组中取一个数,但是不能取这条搜索路径之前取过的。我们可以设置一个bool类型数组used来记录到当前搜索点前被取过的数字(对应在nums数组中位置)。
用全局列表来存放结果,用一个列表作为回溯方法的参数来存放到当前节点时放进排列里的数字,这个回溯方法的参数还应该包括nums数组和used数组,以及当前搜索到的层次。当搜索完nums.length层时,说明一个全排

你可能感兴趣的:(LeetCode,leetcode,算法)