46. Permutations**

来源:互联网 发布:mac air 电池容量 编辑:程序博客网 时间:2024/05/20 19:30

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:

[  [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) {        List<List<Integer>> list = new ArrayList<>();        backtrack(list, new ArrayList<>(), nums);        return list;            }    private void backtrack(List<List<Integer>> list, List<Integer> tempList, int[] nums){        if(tempList.size() == nums.length){            list.add(new ArrayList<>(tempList));        }        else{            for(int i=0; i<nums.length;i++){                if(tempList.contains(nums[i])) continue;                tempList.add(nums[i]);                backtrack(list,tempList,nums);                tempList.remove(tempList.size()-1);            }        }    }    }

总结:递归

    public List<List<Integer>> permute(int[] nums) {        LinkedList<List<Integer>> res = new LinkedList<List<Integer>>();        res.add(new ArrayList<Integer>());         for(int n:nums){            int size = res.size();            for(;size>0;size--){                List<Integer> r  = res.pollFirst();                for(int i=0;i<=r.size();i++){                    List<Integer> t = new ArrayList<Integer>(r);                    t.add(i,n);                    res.add(t);                }                            }        }        return res;    }
总结:迭代




0 0
原创粉丝点击