码迷,mamicode.com
首页 > 其他好文 > 详细

[leedcode 46] Permutations

时间:2015-07-11 12:07:21      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

Given a collection of 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], and [3,2,1].

public class Solution {
    //全排列:构造一个递归函数,函数的参数一个代表开始排列的索引,一个代表最终排列的索引
    //每一位与开始位进行交换,再递归start+1到end,注意结果的保存
    List<Integer> seq;
    List<List<Integer>> res;
    public List<List<Integer>> permute(int[] nums) {
        seq=new ArrayList<Integer>();
        res=new ArrayList<List<Integer>>();
        findpermute(nums,0,nums.length-1);
        return res;
        
        
    }
    public void findpermute(int []nums,int start,int end){
        if(start>end){
             res.add(new ArrayList<Integer>(seq));//注意要重新new一个
            return ;
        }
       
        for(int i=start;i<=end;i++){
            swap(nums,start,i);
            seq.add(nums[start]);
            findpermute(nums,start+1,end);
            seq.remove(seq.size()-1);//注意删除
            swap(nums,start,i);
        }
    }
    public void swap(int[] nums,int i,int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
}

 

[leedcode 46] Permutations

标签:

原文地址:http://www.cnblogs.com/qiaomu/p/4638218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!