排列问题

给定一个没有重复数字的序列,返回其所有可能的全排列。

示例:

输入: [1,2,3]
输出:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]
class Solution {
    boolean[] used;
    List<List<Integer>> res=new ArrayList<List<Integer>>();
    List<Integer> temp=new ArrayList<Integer>();
    public List<List<Integer>> permute(int[] nums) {
        if(nums.length==0)
            return res;
        used=new boolean[nums.length];
        helper(nums);
        return res;
    }
    public void helper(int[] nums)
    {
       if(temp.size()==nums.length)
       {
           ArrayList<Integer> fuck=new ArrayList<>(temp);
           res.add(fuck);
           temp.remove(temp.size()-1);
           return ;
       }
       for(int i=0;i<nums.length;i++)
       {
           if(used[i]==false)
           {
               temp.add(nums[i]);
               used[i]=true;
               helper(nums);
               used[i]=false;
           }
       }
       if(temp.size()>0)
           temp.remove(temp.size()-1);
        return ;
    }
}

47. 全排列 II

给定一个可包含重复数字的序列,返回所有不重复的全排列。
示例:
输入: [1,1,2]
输出:
[
  [1,1,2],
  [1,2,1],
  [2,1,1]
]
class Solution {
    private List<List<Integer>> res=new ArrayList<>();
    private boolean[] used;
    public List<List<Integer>> permuteUnique(int[] nums) {
        used=new boolean[nums.length];
        List<Integer> list=new ArrayList<>();
        Arrays.sort(nums);
        helper(nums,list);
        return res;
    }
    public void helper(int[] nums,List<Integer> list)
    {
        if(list.size()==nums.length)
        {
            res.add(new ArrayList<Integer>(list));
            return ;
        }
        for(int i=0;i<nums.length;i++)
        {
            if(used[i]==true)
                continue;
            if(i>0&&nums[i-1]==nums[i]&&used[i-1]==false)
                continue;
            list.add(nums[i]);
            used[i]=true;
            helper(nums,list);
            list.remove(list.size()-1);
            used[i]=false;
        }
        return ;
    }
}

原文地址:https://www.cnblogs.com/cold-windy/p/11426051.html