思路
使用回溯来解决
第一步是从这三个元素中抽出一个元素,接下来递归求解,继续在其中抽出一个元素
code
class Solution {private List<List<Integer>> res = new ArrayList<>();private boolean[] used; //判断是否使用过// p中保存了一个有index-1个元素的排列。// 向这个排列的末尾添加第index个元素, 获得一个有index个元素的排列private void generatePermutation(int[] nums,int index,LinkedList<Integer> p){//如果包含了所有的元素 则将结果加入resif(index == nums.length){res.add((LinkedList<Integer>)p.clone());return;}//遍历数组 找到需要添加的index元素for(int i=0;i<nums.length;i++){if(!used[i]){ //如果没有使用过p.addLast(nums[i]); //加入队尾used[i]=true; //设定使用generatePermutation(nums,index+1,p); //递归调用 index+1p.removeLast(); //回溯之后将之前的元素出队used[i]=false; //设定没有访问过}}}public List<List<Integer>> permute(int[] nums) {if(nums.length==0)return res;used = new boolean[nums.length];//从index0开始generatePermutation(nums,0,new LinkedList<>());return res;}}



