【打卡】牛客网:BM55 没有重复项数字的全排列

自己写的:

虽然题目要求了排序,但是我没排序也可以通过。

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型vector 
     * @return int整型vector<vector<>>
     */
    
    vector<vector<int> > ans;
    vector<int> flag;
    void dfs(vector<int>num, int index, vector<int>ans_single){
        ans_single.push_back(num[index]);

        if(ans_single.size() == num.size()){
            ans.push_back(ans_single);
            return;
        }

        flag[index] = 1;
        for(int i = 0; i < num.size(); i ++){
            if(flag[i] != 1) // 没有被访问过
                dfs(num, i, ans_single);
        }
        flag[index] = 0;
    }

    vector<vector<int> > permute(vector<int>& num) {
        // write code here
        for(int i = 0; i < num.size(); i++)
            flag.push_back(0);
            
        vector<int> ans_single;
        for(int i = 0; i < num.size(); i++)  // 直接dfs(num, 0, ans_single)会只递归1开头的树,不递归2开头的和3开头的。
            dfs(num, i, ans_single);

        return ans;
    }
};

为了主函数直接调用,优化了一下:

  • 之前的dfs的参数是2个。回溯的时候,flag回溯。
  • 现在的dfs的参数是2个。回溯的时候,flag和ans_single都要回溯。
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型vector 
     * @return int整型vector<vector<>>
     */
    
    vector<vector<int> > ans;
    vector<int> flag;
    void dfs(vector<int>num, vector<int>ans_single){
        if(ans_single.size() == num.size()){
            ans.push_back(ans_single);
            return;
        }
        
        for(int i = 0; i < num.size(); i ++){
            if(flag[i] != 1) { // 没有被访问过  
                flag[i] = 1; //放在for循环的里面
                ans_single.push_back(num[i]);
                dfs(num, ans_single);
                ans_single.pop_back(); //调试很久,忘记回溯
                flag[i] = 0; //回溯
            }     
        }
        
    }

    vector<vector<int> > permute(vector<int>& num) {
        // write code here
        for(int i = 0; i < num.size(); i++)
            flag.push_back(0);
            
        vector<int> ans_single;

        dfs(num, ans_single);

        return ans;
    }
};

模板的:

没有全局变量。

我的有,需要全局变量记录是否访问过。

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param num int整型vector 
     * @return int整型vector<vector<>>
     */
    
    void dfs(vector<vector<int>> &res, vector<int> &num, int index){
        if(index == num.size()-1){
            res.push_back(num);
            return;
        }


        for(int i = index; i < num.size(); i++){
            swap(num[index],num[i]); 
            dfs(res, num, index+1);
            swap(num[index],num[i]); //回溯
        }

    }

    vector<vector<int> > permute(vector<int>& num) {
        // write code here
        vector<vector<int> > res;
        // sort(num.begin(),num.end());
        dfs(res,num,0);
        return res;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/157828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

23届计科,想找Java开发之类,真的是很难吗?

23届计科&#xff0c;想找Java开发之类&#xff0c;真的是很难吗&#xff1f; 你的投递信息(投递多少家&#xff0c;如何跟hr打招呼&#xff0c;已读不回如何应对等)都亮- -下才能知道问题出在 哪。最近很多小伙伴找我&#xff0c;说想要一些Java的资料&#xff0c;然后我根据…

Ubuntu 下C++数字雨

以前写过一个Window下的数字雨&#xff0c;像黑客帝国里那样的01数字&#xff0c;现在补充一版Linux下的。使用了curses库&#xff0c;安装方法与使用方法参照 Linux下curses函数库的详细介绍_libcurses库-CSDN博客 5-linux学习笔记之-----curses-CSDN博客 效果如下&#xf…

21. 深度学习 - 拓朴排序的原理和实现

文章目录 Hi,你好。我是茶桁。 上节课&#xff0c;我们讲了多层神经网络的原理&#xff0c;并且明白了&#xff0c;数据量是层级无法超过3层的主要原因。 然后我们用一张图来解释了整个链式求导的过程&#xff1a; 那么&#xff0c;我们如何将这张图里的节点关系来获得它的求…

抖音自动评论脚本,可按关键词,实现批量点赞,按键精灵开源版!

这个脚本是我之前给一个客户开发的&#xff0c;现在用着也没啥意义&#xff0c;开发了很多&#xff0c;我索性就把代码直接分享出来&#xff0c;给一些新手做学习研究用&#xff0c;里面很多结构都是自己花费了很大的心思和心血才弄出来的&#xff0c;所以价值很高。 UI界面&a…

OpenAI GPT5计划泄露

OpenAI的首席执行官萨姆奥特曼在最近接受《金融时报》的专访时&#xff0c;分享了OpenAI未来发展的一些新动向。此外&#xff0c;他还透露了关于即将到来的GPT-5模型以及公司对AGI的长期目标的一些细节。 奥特曼指出&#xff1a; 1.OpenAI正在开发GPT-5&#xff0c;一种更先进的…

QT绘图设备

pixmap绘图设备在磁盘上进行绘图 通过pix.save将图片保存到E盘下 不是主要的绘画设备&#xff0c;可以将绘图指令保存 然后在下边可以调用重现绘图指令

多媒体领域顶会ACM MM 2023 获奖论文一览

ACM 国际多媒体会议是计算机科学领域中多媒体领域的顶级会议&#xff0c;属于CCF A类。今年的ACM MM 2023 已于2023年10月29日至11月2日在加拿大渥太华举行。 ACM MM会议专注于推动多媒体研究和应用&#xff0c;其研究领域广泛涉及触觉、视频、VR/AR、音频、语音、音乐、传感器…

Unity 场景烘培 ——LensFlare镜头光晕(三)

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神指出&#xff01; 文章目录 前言一、镜头光晕 (Lens Flares)是什么&#xff1f;二、使用Lens Flares组件总结 前言 一般情况下都会忽略的东西&#xff0c;镜头光晕。理论上不加镜头光晕&#xff0c;也不会有什么影响…

Linux---(七)Makefile写进度条(三个版本)

文章目录 一、前提引入&#x1f397;️下面的代码什么现象&#xff1f;&#x1f397;️下面的代码什么现象&#xff1f; 二、缓冲区三、回车换行&#x1f397;️注意&#x1f397;️图解&#x1f397;️老式回车键造型&#xff08;意思是充当两个动作&#xff09;&#x1f397;…

洛谷 P3131 [USACO16JAN] Subsequences Summing to Sevens S

被普及-卡的没思路真是蒟蒻啊233 优化思路 每次都在枚举(a[r]-a[l-1])%70&#xff0c;所以可以认为数组大小对最终答案没有影响&#xff0c;考虑对前缀和数组取模&#xff0c;那么如果有a[r]的值等于a[l-1]的值相等&#xff08;即余数相等&#xff09;&#xff0c;那么两者相减…

C++实现KNN和K-Means

学校机器学习课程的实验课要求实现KNN和K-Means&#xff1a; &#xff08;平时没听课&#xff09;临时去查了一下KNN和K-Means是啥&#xff0c;然后自己用C写了小例子&#xff0c;想着写都写了那就把代码贴出来吧。 顺便再聊聊自己对于这俩算法的理解。 下面是文心一言的回答…

如何快速下载mysql的不同版本并启动mysql服务?

如何快速下载mysql的不同版本并启动mysql服务&#xff1f; 下载mysql的安装版本 首先我们要使用到迅雷去下载&#xff0c;因为迅雷下载是很快的。在迅雷里面搜索下面的Mysql Installer安装窗口&#xff0c;如下图&#xff1a; 连接&#xff1a;https://dev.mysql.com/downlo…

如何避免被他人“背刺”?

请公主们、王子们&#xff0c;花点时间看一下&#xff0c;谢谢。 在人与人相处中&#xff0c;难免不会碰上与人合作交往&#xff0c;虽然大多数时候我们是选择熟悉一点的朋友&#xff0c;但是也不能掉以轻心&#xff0c;现实生活中也不是不存在被亲戚朋友“背刺”&#xff0c;…

MySQL主从同步

文章目录 MySQL主从同步概述MySQL主从同步原理MySQL主从同步结构模式MySQL主从同步搭建搭建步骤一主一从实验环境master主机slave1主机验证主从同步 一主多从master主机slave2主机验证主从同步 链式复制&#xff08;主从从&#xff09;slave1主机slave2主机验证链式复制 MySQL主…

SpringBoot2—基础篇

目录 快速上手SpringBoot • SpringBoot入门程序开发 基于Idea创建SpringBoot工程&#xff08;一&#xff09; 基于官网创建SpringBoot工程&#xff08;二&#xff09; 基于阿里云创建SpringBoot工程&#xff08;三&#xff09; 手工创建Maven工程修改为SpringBoot工程&…

GPT-4V新玩法登顶GitHub热榜,随手一画就能生成网页!web开发者:感受到了威胁

西风 发自 凹非寺 量子位 | 公众号 QbitAI 随手一画就能生成网页&#xff01;GPT-4V新玩法登顶GitHub热榜&#xff0c;狂揽3000&#x1f31f;&#xff1a; 现在只要简单画一画&#xff0c;框一框&#xff0c;点击执行&#xff1a; “啪”地一下&#xff0c;一个带有各种“按钮…

Apriori算法

Apriori算法由R. Agrawal和R. Srikant于1994年在数据集中寻找布尔关联规则的频繁项集。该算法的名称是Apriori&#xff0c;因为它使用了频繁项集属性的先验知识。我们应用迭代方法或逐层搜索&#xff0c;其中k-频繁项集用于找到k1个项集。 为了提高频繁项集逐层生成的效率&…

oracle21c安装报错【[INS-32014] 指定的 Oracle 基目录位置XXX无效】

一.问题 [INS-32014] 指定的 Oracle 基目录位置XXX无效 二.解决办法 安装包的文件放置不可以在中文字文件夹下面&#xff0c;改为英文【soft】,就可以成功安装完成了&#xff01;

米尔AM62x核心板,高配价低,AM335x升级首选

AM335x是TI经典的工业MPU&#xff0c;它引领了一个时代&#xff0c;即工业市场从MCU向MPU演进&#xff0c;帮助产业界从Arm9迅速迁移至高性能Cortex-A8处理器。随着工业4.0的发展&#xff0c;HMI人机交互、工业工控、医疗等领域的应用面临迫切的升级需求&#xff0c;AM62x处理器…

mysql统计整个数据库记录条数

SELECTSUM(TABLE_ROWS) FROM(SELECTTABLE_NAME,TABLE_ROWSFROMINFORMATION_SCHEMA.TABLESWHERETABLE_SCHEMA 数据库名&#xff0c;其他不变) t;效果如下&#xff1a;
最新文章