51. 数字排列(含重复数字)

题目地址:https://www.acwing.com/problem/content/87/

AC代码

class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;

    bool canSwap(vector<int>& v,int start ,int end){
        for(int i=start;i<end;++i) if(v[i]==v[end]) return false;
        return true;
    }

    void f(vector<int>& v,int start,int len){
        if(start==len){
            res.push_back(path);
            return;
        }
        
        for(int i=start;i<len;++i){
            if(canSwap(v,start,i)){
                path.push_back(v[i]);
                swap(v[i],v[start]);
                f(v,start+1,len);
                swap(v[i],v[start]);
                path.pop_back();
            }
        }
    }
    
    vector<vector<int>> permutation(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        f(nums,0,nums.size());
        return res;
    }
};

总结

题解参考讨论区

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Linux安装软件和配置时候的坑 Linux本机软件管理rpm RPM软件管理器:rpm Linux在线安装/升级...
    禁欲系泰迪阅读 149评论 0 0
  • 就在这周五,我们完成了所有的考试,这一个周的高强度复习使得大家大概是早已疲劳不堪了吧。不过这一周的大家学习氛围...
    卫校一六护二阅读 213评论 0 0
  • 忙了一天工作,回来只是想泡杯咖啡,吃点零食,翻一翻新闻,看一看电视,舒舒服服地放空自己。不想去吾日三省吾身,懒得去...
    吃好没吃饱阅读 309评论 0 1
  • 我愿把我的一生比作一支口红, 它见证了我的一生, 从年轻到老去,从荣光到衰落, 就这样,静静地。 少年,是一抹淡淡...
    溪寰阅读 193评论 0 1
  • 1. 抬头是来自某部电影里的总裁所说的座右铭,‘控制自己的人,才能控制结果’。 这句话一直不断提醒在我这几年漫长的...
    千緹阅读 398评论 0 1