• Permutations II


    Given a collection of numbers that might contain duplicates, return all possible unique permutations.

    For example,
    [1,1,2] have the following unique permutations:
    [1,1,2][1,2,1], and [2,1,1].

    class Solution {
    public:
        vector<vector<int> > permuteUnique(vector<int> &num) 
        {
            //sort num
            for(int i=0;i<num.size();i++)
                for(int j=i+1;j<num.size();j++)
                    if(num[i]>num[j])
                    {
                        int tmp=num[i];
                        num[i]=num[j];
                        num[j]=tmp;
                    }
            
            vector<vector<int>> result;
            int v[num.size()];
            generate(result,num,v,0);
            return result;
        }
        void generate(vector<vector<int>>& result,vector<int> num,int* v,int vdep)
        {
            if(num.size()==0)
            {
                vector<int> newnum;
                for(int i=0;i<vdep;i++)
                    newnum.push_back(v[i]);
                result.push_back(newnum);
                return;
            }
            int index=0;
            int size=num.size();
            while(index<size)
            {
                vector<int> newnum;
                for(int i=0;i<size;i++)
                    if(i!=index)
                        newnum.push_back(num[i]);
                v[vdep]=num[index];
                generate(result,newnum,v,vdep+1);
                //next different num
                while(index+1<size && num[index+1]==num[index]) index++;
                index++;
            }
        }
    }; 
  • 相关阅读:
    MongoDB查询
    MongoDB增删改查
    redis复制
    HTTP请求方法与状态码
    Solr工作原理
    idea多行同一列同时编辑;多光标处同时编辑方法
    SVN merge 三种方式
    vue中msgbox的使用;如何在msgbox中新增一个输入框组件传值给后台
    切换或重新输入svn用户名密码或通过tortoisesvn查看svn密码
    MyBatis中#{}和${}的区别
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759364.html
Copyright © 2020-2023  润新知