• (待解决,效率低下)47. Permutations II C++回溯法


    思路是在相似题Permutations的基础上,将结果放到set中,利用set容器不会出现重复元素的特性,得到所需结果

    但是利用代码中的/* */部分通过迭代器遍历set将set中的元素放在一个新的vector中时,会出现memory limit exceeded错误(原因??)

    上网查找后发现可以直接通过return vector<vector<int>> (mySet.begin(),mySet.end())得到结果,并且代码通过。

    class Solution {
    public:
        void backTrack(vector<int> nums, set<vector<int>>& mySet, vector<int> res, int k, int m[])
    {
        if(k == nums.size())
        {
            mySet.insert(res);
        }
        else
        {
            for(int i=0;i<nums.size();i++)
            {
                if(!m[i])
                {
                    m[i] = 1;
                    res.push_back(nums.at(i));
                    backTrack(nums,mySet,res,k+1,m);
                    res.pop_back();
                    m[i] = 0;
                }
            }
        }
    }
        vector<vector<int>> permuteUnique(vector<int>& nums) {
            vector<vector<int>> ans;
            vector<int> res;
            set<vector<int>> mySet;
            int m[nums.size()] = {0,};//true为未用过
            backTrack(nums,mySet,res,0,m);
            /*set<vector<int>>::iterator itr = mySet.begin();
            while(itr != mySet.end())
            {
                ans.push_back(*itr);
                for(int i=0; i<(*itr).size();i++)
                {
                    cout << (*itr).at(i) << ' ';
                }
                cout << endl;
                itr++;
            }*/
            return vector<vector<int>> (mySet.begin(),mySet.end());
        }
    };

  • 相关阅读:
    springmvc实现文件上传
    springmvc乱码及restful
    springmvc数据的处理
    springmvc跳转方式
    controller配置
    SpringMVC Annotation
    SpringMVC基本包
    第一章 面向对象软件工程与UML
    Oracle数据库之PL/SQL程序基础设计
    thinkphp5 给CSS JS 添加版本号
  • 原文地址:https://www.cnblogs.com/tornado549/p/9990678.html
Copyright © 2020-2023  润新知