lintcode--全排列

来源:互联网 发布:js课程设计 编辑:程序博客网 时间:2024/04/27 17:26

给定一个数字列表,返回其所有可能的排列。

 注意事项

你可以假设没有重复数字。

样例

给出一个列表[1,2,3],其全排列为:

[  [1,2,3],  [1,3,2],  [2,1,3],  [2,3,1],  [3,1,2],  [3,2,1]

]

//回溯法public class Solution {    public List<List<Integer>> permute(int[] nums) {         ArrayList<List<Integer>> lists = new ArrayList<>();         if (nums == null)  return lists;         if (nums.length == 0) {            lists.add(new ArrayList<Integer>());            return lists;         }         ArrayList<Integer> list = new ArrayList<Integer>();         helper(lists, list, nums);         return lists;    }        public void helper(ArrayList<List<Integer>> lists, ArrayList<Integer> list, int[] nums){        //如果已经全部排完        if(list.size() == nums.length) {            lists.add(new ArrayList<Integer>(list));            return;        }        for(int i = 0; i < nums.length; i++){            if(list.contains(nums[i])){                continue;            }else{                list.add(nums[i]);                helper(lists, list, nums);                list.remove(list.size() - 1);            }            //list.remove(list.size() - 1);这里也可以        }    }}            

原创粉丝点击