46. 全排列

题意:

给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]

思路:

直接用STL的next_permutation函数可以直接做,但是如果面试时候这么说,就不太合适,既然问到,就是考你会不会实现全排列函数,所以就要手写全排列函数。先给一个STL的实现:

class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        sort(nums.begin(), nums.end()); //使用前记得先排序,因为next_permutation是根据字典序求下一个序列的排列
        vector<vector<int> > ans;
        do{
            ans.push_back(nums);
        }while(next_permutation(nums.begin(), nums.end()));
        return ans;
    }
};

关于实现next_permutation函数,我从网上找了一篇很好理解的文章,可以直接学习。
https://blog.csdn.net/yang20141109/article/details/51333417
理解了原理,代码就懒得写了,你以为我会写吗,不可能的~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 年底,工地放假,石锁和石柱归心似箭,打算开着农用三轮车第二天就回家。 工地上很多同村的乡亲,他们为了节省路费,选择...
    探微游尘阅读 5,037评论 9 13
  • 凯恩斯是澳洲东北部的一个小镇,是著名度假胜地,因靠近赤道,又被称为热带之都。凯恩斯背倚壮丽高山,有着大片保持着原始...
    心斋小筑阅读 3,770评论 2 3
  • 开学半个多月了,一直说孩子不自律实际我也做不到,这才是开学后的第二篇日记真的很惭愧,也许我也还没从假期里走出...
    李润泽妈妈阅读 760评论 0 2
  • 看完了乔布斯的演讲,很受震动。一个把每天都当成最后一天来过的人就可以战无不胜了,什么失败难堪等等都不是事了。死亡确...
    章琳玖_dd35阅读 942评论 0 1