Permutations II

来源:互联网 发布:循环大批量更新数据库 编辑:程序博客网 时间:2024/05/16 10:55

这道题和前一题类似。为了让答案不重复,比如两个1、1,我们要用第二个1的时候,必须要求第一个1已经使用过了,这样就不会出现重复。

class Solution {private:    vector<vector<int> > ans;public:    vector<vector<int> > permuteUnique(vector<int> &num) {        sort(num.begin(),num.end());        bool used[num.size()];        memset(used,0,sizeof(bool)*num.size());        vector<int> temp;        temp.clear();        find(num,0,temp,used);                return ans;    }        void find(vector<int> &num, int depth, vector<int> &temp,bool *used)    {        if(depth == num.size())        {            ans.push_back(temp);            return;        }                for(int i = 0; i < num.size();i++)        {            if(!used[i])            {                if(num[i]==num[i-1]&&used[i-1]==0&&i>0)                    continue;                   used[i] = 1;                temp.push_back(num[i]);                find(num,depth+1,temp,used);                temp.pop_back();                used[i] = 0;            }        }    }};


0 0
原创粉丝点击