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

<LeetCode OJ> 46. Permutations

时间:2016-01-09 17:05:29      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

46. Permutations

My Submissions
Total Accepted: 81495 Total Submissions: 239854 Difficulty: Medium

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

Subscribe to see which companies asked this question

Hide Tags
 Backtracking

















//思路首先:算了,还是用stl来做吧
//再次来看nextPermutation的原理:
//但是比较明显的规律是:
//1,升序为最小组合数,降序为最大组合数
//2,某一个数的下一个数,就是比他大的最小组合数,比如123,下一个比他大的最小组合就是132,所以必须从低位处理
//3,找到首个升序序列将其交换,然后逆置后面的数。比如:1234311
//为1243311(首个升序已经交换),显然此数不是最小,并且后面的数逆置后才是最小的,即1243311为1243113。so,done!。
//参考我的另一篇文章:http://blog.csdn.net/ebowtang/article/details/50450861
class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        int col=nums.size();
        int row=1;
        for(int i=1;i<=col;i++)//求阶乘
            row*=i;
        vector< vector<int> >  result(row);     
        for(int i=0;i < row ;i++)     
            result[i].resize(col);//设置数组的大小row行,col列
        if(nums.empty())
            return result;
        vector<int> tmpnums=nums;
        sort(tmpnums.begin(),tmpnums.end());//先排序
        result[0]=tmpnums;
        for(int i=1;i<row;i++)
        {
            next_permutation(tmpnums.begin(), tmpnums.end());
            result[i]=tmpnums;
        }  
        return result;
    }
};



注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!

原文地址:http://blog.csdn.net/ebowtang/article/details/50488439

原作者博客:http://blog.csdn.net/ebowtang

<LeetCode OJ> 46. Permutations

标签:

原文地址:http://blog.csdn.net/ebowtang/article/details/50488439

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