全排列

作者: 小白学编程 | 来源:发表于2018-10-01 08:53 被阅读0次

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

    示例:

    输入: [1,2,3]
    输出:
    [
    [1,2,3],
    [1,3,2],
    [2,1,3],
    [2,3,1],
    [3,1,2],
    [3,2,1]
    ]

    思路

    class Solution {
        public List<List<Integer>> permute(int[] nums) {
            List<List<Integer>> L = new ArrayList<List<Integer>>();
            perm(nums, 0, L);
            return L;
            
        }
        
        public void perm(int[] nums, int start, List<List<Integer>> L){
            
            if (start == (nums.length-1)){
                List<Integer> list = new ArrayList<Integer>();
                for (int j=0; j<nums.length; ++j){
                    list.add(nums[j]);
                }
                L.add(list);
            }
            for (int i=start; i<nums.length; ++i){
                
                swap(nums, start, i);
                perm(nums, start+1, L);
                swap(nums, i, start);
            }
        }
        
        public void swap(int[] nums, int a, int b){
            int temp = nums[a];
            nums[a] = nums[b];
            nums[b] = temp;
        }
    }
    

    相关文章

      网友评论

          本文标题:全排列

          本文链接:https://www.haomeiwen.com/subject/gbzwoftx.html