示例 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 中的所有整数 互不相同
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Java解法:
class Solution { List<List<Integer>> l1=new ArrayList(); public List<List<Integer>> permute(int[] nums) { List<Integer> l2=new ArrayList(); permuteAll(l2,nums); return l1; } public void permuteAll(List l2,int []nums){ //若l2中的添加的元素数与nums数组的大小相同,则表示满足条件 if(nums.length==l2.size()){ //记录下这种情况 l1.add(new ArrayList(l2)); return; } //遍历nums数组 for(int i=0;i<nums.length;i++){ //若l2中已添加当前元素,则跳过 if(l2.contains(nums[i])){ continue; } //保证l2中添加的元素不重复 l2.add(nums[i]); //递归调用 permuteAll(l2,nums); //当得到一种满足条件的全排列后,删除末尾元素试其他情况 l2.remove(l2.size()-1); } } }