关闭

leetcode 46 : Permutations

标签: 面试算法leetcode
349人阅读 评论(0) 收藏 举报
分类:

http://blog.csdn.net/tuantuanls/article/details/8717262 分析的很好

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].


class Solution {
public:
    vector> permute(vector& nums) {
        vector> ret;
        vector backNums=nums;
        if(nums.size()==1)
        {
            ret.push_back(nums);
            return ret;
        }
        //for(int i=0;i> tmp=permute(nums);
//一直删除,在其他的递归层次中当前值都不存在,所以要插入各个位置(如果删除一个,就恢复nums,再循环删除下一个,
//到时只要插入头部即所求,因为是循环恢复删除当前过程中 删除的元素在其他的循环中会恢复包含在除去头部的任何位置
            for(int j=0;j backTmpJ=tmp[j];
                for(int k=0;k<=tmp[j].size();k++){
                    backTmpJ=tmp[j];
                    backTmpJ.insert(backTmpJ.begin()+k,backNums[0]);//将移除的nums.begin()插入各个位置
                    ret.push_back(backTmpJ);
                }
            }
        //}
        return ret;
    }
};
// 循环恢复删除
class Solution {
public:
    vector> permute(vector& nums) {
        vector> ret;
        vector backNums=nums;
        if(nums.size()==1)
        {
            ret.push_back(nums);
            return ret;
        }
        for(int i=0;i> tmp=permute(nums);
            for(int j=0;j
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:140584次
    • 积分:3041
    • 等级:
    • 排名:第12995名
    • 原创:154篇
    • 转载:115篇
    • 译文:0篇
    • 评论:2条
    最新评论