美文网首页程序员
LeetCode:全排列

LeetCode:全排列

作者: 李海游 | 来源:发表于2020-04-20 20:11 被阅读0次

    46. 全排列

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

    思路:

    回溯算法:

    • 到达最后一步时,进行操作。
    • 做出选择
    • 递归
    • 撤销选择
    class Solution {
    public:
        vector<vector<int>> permute(vector<int>& nums) {
            vector<vector<int>> res;
            vector<int> tmp;
            help(nums,tmp,res);
            return res;
        }
        void help(vector<int>& nums,vector<int> tmp,vector<vector<int>> &res)
        {
            if(tmp.size()==nums.size())
            {
                res.push_back(tmp);
                return;
            }
                
            for(int i=0;i<nums.size();++i)
            {
                if(find(tmp.begin(),tmp.end(),nums[i])!=tmp.end())
                    continue;
                tmp.push_back(nums[i]);
                help(nums,tmp,res);
                tmp.pop_back();
            }
        }
    };
    

    相关文章

      网友评论

        本文标题:LeetCode:全排列

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