46. Permutations --- leetcode 算法笔记

来源:互联网 发布:汽修厂管理接待软件 编辑:程序博客网 时间:2024/06/05 15:28

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

思路:若前n个数已经排好,则第n+1个数只需插入到前n个数中即形成前n+1个数的全部排列。即数学归纳法的思想。

代码:

public List<List<Integer>> permute(int[] nums) {        List<List<Integer>> permutations = new ArrayList<List<Integer>>() ;        for(int i = 0 ;i < nums.length ;i ++){            permutations = permute(permutations,nums[i]) ;        }        return permutations ;    }    private List<List<Integer>> permute(List<List<Integer>> permutations, int num){        if(permutations.size() <= 0){            List<Integer> permutation = new ArrayList<Integer>() ;            permutation.add(num) ;            permutations.add(permutation) ;            return permutations ;        }else{            List<List<Integer>> ret = new ArrayList<List<Integer>>() ;            for(List<Integer> permutation : permutations){                for(int i = 0 ;i <= permutation.size() ; i++){                    List<Integer> p = new ArrayList<Integer>(permutation) ;                    p.add(i,new Integer(num)) ;                    ret.add(p) ;                }            }            return ret ;        }    }


0 0
原创粉丝点击