5.C++力扣刷题645

2023-11-02

题目:
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合丢失了一个数字并且有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/set-mismatch
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例:
示例 1:
输入:nums = [1,2,2,4]
输出:[2,3]

示例 2:
输入:nums = [1,1]
输出:[1,2]

提示:
2 <= nums.length <= 10^4
1 <= nums[i] <= 10^4

个人代码如下:

class Solution {
public:
    vector<int> findErrorNums(vector<int>& nums) {
        vector<int> newnums;//用来返回最终结果
        sort(nums.begin(),nums.end());//利用sort函数对数组进行排序
        int number = 1;//用来进行数组数字顺序比对,初始值设为1
        //本层循环用来找到相同的重复数
        for(int i=0;i<nums.size()-1;i++){
            if(nums[i] == nums[i+1]){
                newnums.push_back(nums[i]);//将当前的数组元素存入返回结果的新数组中
                nums.erase(nums.begin()+i,nums.begin()+i+1);//利用erase函数删除下一个相同元素
                break;//数组只有一个重复数,找到后即可退出循环
            }
            /*nums.erase(nums.begin()+i,nums.begin()+i+1);
            break;*/
        }
        //本层循环用来找到不匹配的元素
        for(int i=0;i<nums.size()+1;i++){
            if(nums[i] != number){
                newnums.push_back(number);//将与数组元素不匹配的number插入到新数组中,即为丢失元素
                break;//只有一个不匹配元素,找到即可退出循环
            }
            number ++;//若数组元素与number相等,则number自增1继续循环
        }
         return newnums;   
    }
};

解题思路:
如代码注释。

官方哈希表方法代码如下:

class Solution {
public:
    vector<int> findErrorNums(vector<int>& nums) {
        vector<int> errorNums(2);
        int n = nums.size();
        unordered_map<int, int> mp;
        for (auto& num : nums) {
            mp[num]++;
        }
        for (int i = 1; i <= n; i++) {
            int count = mp[i];
            if (count == 2) {
                errorNums[0] = i;
            } else if (count == 0) {
                errorNums[1] = i;
            }
        }
        return errorNums;
    }
};

解题思路:
重复的数字在数组中出现 2 次,丢失的数字在数组中出现 0 次,其余的每个数字在数组中出现 1 次。因此可以使用哈希表记录每个元素在数组中出现的次数,然后遍历从 1 到 n 的每个数字,分别找到出现 2 次和出现 0 次的数字,即为重复的数字和丢失的数字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5.C++力扣刷题645 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我

随机推荐

  • C++:带内嵌对象成员的派生类的构造函数,析构函数的声明方式与执行的先后顺序

    声明了某个带内嵌对象成员的派生类的对象并进行初始化时 我们要使用到派生类的构造函数 在这时 派生类的构造函数会调用内嵌对象 父类 基类 的构造函数 那么 这些构造函数的执行顺序是什么呢 我们知道 被继承的类可以被叫做父类或基类 因此它作为构
  • 黑马Python教程实战项目--美多商城(五)

    一 用户基本信息 首先需要为用户模型类 也就是用户数据表 补充一个邮箱验证状态字段 用来记录用户的邮箱是否验证成功 然后新建用户中心视图类 继承LoginRequiredMixin和View类 在子路由中添加路由 定义get方法 在requ
  • 虚拟机非正常关机,重启网卡

    在命令行运行以下命令即可重新连接上网络 sudo service network manager stop sudo rm var lib NetworkManager NetworkManager state sudo service n
  • Google云

    Google 云计算 Cloud Computing 是个新概念 但也不过是分布式处理 Distributed Computing 并行处理 Parallel Computing 和网格计算 Grid Computing 的发展 也许是一个
  • 余弦计算相似度度量

    目录 pytorch 余弦相似度 余弦计算相似度度量 pytorch 余弦相似度 余弦相似度1到 1之间 1代表正相关 0代表不相关 1代表负相关 def l2 norm input axis 1 norm torch norm input
  • [改善Java代码]适当设置阻塞队列长度

    阻塞队列BlockingQueue扩展了Queue Collection接口 对元素的插入和提取使用了 阻塞 处理 我们知道Collection下的实现类一般都采用了长度自行管理方式 也就是变长
  • adamax参数_5 Optimizer-庖丁解牛之pytorch

    优化器是机器学习的很重要部分 但是在很多机器学习和深度学习的应用中 我们发现用的最多的优化器是 Adam 为什么呢 pytorch有多少优化器 我什么时候使用其他优化器 本文将详细讲述 在torch optim 包中有如下优化器torch
  • 从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断

    1 导读 2023年年初最火热的话题之一就是OpenAI的ChatGPT1 给人类带来了巨大的冲击 1月底 美国 财富 杂志2 3月合刊的封面文章 全球爆红的ChatGPT是如何诞生的 引爆了创投圈 在这巨大的浪潮冲击下 如何让其在医疗领域
  • 某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工

    简单计算工资 张景敏 2021 1 22 include
  • 多物理场仿真 Chrono 转向机构

    为方便查阅 此文是原网站文档翻译 如有侵权 请与本人联系 目录 转向垂臂 齿条小齿轮 旋转臂 基础类别ChSteering规定 任何衍生的转向机构类别 转向机构模板 都提供了一个转向连杆体 可转向悬架可以连接到该转向连杆体上 通常通过悬架的
  • chrome下载

    https zhuanlan zhihu com p 438998185
  • Docker基础修炼1--Docker简介及快速入门体验

    本文作为Docker基础系列第一篇文章 将详细阐述和分析三个问题 Docker是什么 为什么要用Docker 如何快速掌握Docker技术 本系列文章中Docker的用法演示是基于CentOS7进行 因此假设读者已经掌握了初步的Linux知
  • 使用选择排序和二分法对传入的数组进行排序和查找

    选择排序和二分法 使用二分法查找数组中某个值得位置是要在数组提前排好序的前提下才能使用 所以要将数组进行排序 数组排序有冒泡排序 选择排序 插入排序等 今天我们使用选择排序对数组进行排序 测试类代码如下图 运行结果如下图 位置为i 1 所以
  • JSP基础理论

    来自 千峰涛哥B站资料 一 JSP概述 1 1 Servlet使用的不足 Servlet是一个动态网页技术 客户端通过请求Servlet类可以相应给客户端一个动态网页 但是Servlet在使用过程中有什么不足之处呢 开发方式麻烦 继承Htt
  • 在Java基础上对比学习C#基本语法

    文章目录 一 引包 二 构造函数 三 析构函数 四 C 数据类型 五 加框 boxing 和消框 unboxing 六 运算符 七 控制语句 八 类的继承 九 方法参数的种类 十 操作符重载 十一 this关键字 十二 类的多态 十三 抽象
  • 目标检测模型的评价指标 mAP

    在使用机器学习解决实际问题时 通常有很多模型可用 每个模型都有自己的怪癖 quirks 并且基于各种因素 性能会有所不同 模型性能的评定都是在某个数据集上进行的 通常这个数据集被称为 validation 或 test 数据集 模型性能的评
  • Java+Swing形成GUI图像界面

    一 Swing 简介 Swing 主要用来开发 GUI 程序 GUI Graphical User Interface 即图形用户界面 Java 中针对 GUI 设计提供了丰富的类库 这些类分别位于 java awt 和 java swin
  • Android高仿qq及微信底部菜单的几种实现方式

    文章目录 导航类型 第一种方式 侧滑菜单 底部导航 已经实现聊天 表情 图片 位置 语音等信息的发送 第二种方式 Fragment PopupWindow仿QQ空间最新版底部菜单栏 第三种方式 FragmentTabHost实现qq底部Ta
  • (一)在ubuntu20.04安装VPN服务

    很多时候需要从世界各地来访问公司服务器 电脑 工厂设备 实现方式有很多种 主要分为VPN和内网穿透方式 但是他们俩都存在一些问题 例如内网穿透主要利用外网IP 端口映射内网IP地址 端口方式 需要在设备端 电脑端装软件 例如frp方式需要在
  • 5.C++力扣刷题645

    题目 集合 s 包含从 1 到 n 的整数 不幸的是 因为数据错误 导致集合里面某一个数字复制了成了集合里面的另外一个数字的值 导致集合丢失了一个数字并且有一个数字重复 给定一个数组 nums 代表了集合 S 发生错误后的结果 请你找出重复