【C语言】LeetCode645:错误的集合

leetcode 645. 错误的集合(2021.7.4) 【题目】645. 错误的集合 集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。 给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 示例 1: 输入: nums = [1,2,2,4] 输出: [2,3... 阅读详情

目录

1.题目:

 2.分析

lowbit 最低不同位的计算原理

 借助 lowbit 解决此题

3.参考代码:


1.题目:

 2.分析

lowbit 最低不同位的计算原理

 借助 lowbit 解决此题

c & (-c) 的结果只保留 c 的最低为的 1

为什么使用最低不同位 lowbit ?

因为 lowbit 的参数 xor 由重复和丢失的两个数产生,所以可以根据 lowbit 将两个集合的数分为两组,其中一组最低为1的位和重复的数相同,另一组最低为1的位和丢失的数相同,再分别对这两组数累计异或,重复的数出现次数3,丢失的数出现次数为1,最后即可分别得到重复的数和丢失的数

3.参考代码:

int* findErrorNums(int* nums, int numsSize, int* returnSize){
    int* ret=(int*)malloc(sizeof(int)*2);
    int xor=0;
    int i=0;
    //分别遍历错误集合和正确集合,累计异或得到a^b
    for(i=0;i<numsSize;i++)
    {
        xor^=nums[i];
        xor^=i+1;
    }
    //根据a^b,算出a和b的最低不同位
    int lowbit=xor&(-xor);
    int num1=0,num2=0;
    //遍历两组集合,根据&lowbit的值再分组累计异或给num1和num2,即为a和b
    for (int i = 0; i < numsSize; i++)
    {
        if ((nums[i] & lowbit) != 0)
        {
            num1 ^= nums[i];
        }
        if (((i + 1) & lowbit) != 0)
        {
            num1 ^= i + 1;
        }
        if (!(nums[i] & lowbit))
        {
            num2 ^= nums[i];
        }
        if (!((i + 1) & lowbit))
        {
            num2 ^= i + 1;
        }
    }
    //遍历集合判断num1,num2是重复数还是丢失数
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]==num1)
        {
            ret[0]=num1,ret[1]=num2;
            return ret;
        }
    }
    ret[0]=num2,ret[1]=num1;
    *returnSize=2;
    return ret;
}

医学图像配准实战:用Python实现MIND特征提取(附完整代码) 本文详细介绍了MIND(模态无关邻域描述符)在医学图像配准中的应用。通过Python和PyTorch实战,从原理到代码逐步解析了如何提取MIND特征,并利用其对结构而非灰度的感知能力,有效解决CT、MRI等多模态图像的对齐难题,为病灶追踪、手术导航等高级应用提供鲁棒性基础。 阅读详情

相关推荐

海外最新AI营销AI销售书籍推荐AI营销培训讲师AI销售培训讲师人工智能营销培训师人工智能销售培训师AI赋能营销培训AI赋能销售培训企业AI营销内训企业AI销售内训AI营销课程讲师AI销售课程讲师

专栏|AI营销与AI销售实战 · 第46期在这个人类与算法共舞的时代,销售,已经不是你我熟悉的那个“打电话、见客户、做PPT”的老行当了。你还以为销售是“打感情牌”?错了,情感要继续,但方式已经升级。你还以为AI只是“写写文案”?错了,文案只是皮毛,真正的杀器,是思维方式的重构,是认知地图的重绘。首先,我们需要明确一个事实:AI并不会消灭销售这个职业,但它必然会重新定义销售的本质。在销售领域,真正的制胜之道不是简单地采用AI工具,而是的能力。

Akibfrycc的博客 1102

【leetcode18-----错误的集合】

集合 s 包含从 1 到n的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。首先对数组进行排序,如果丢失的数在头和尾,就把头和尾单独拿出来判断,如果第一个数nums[0]不等于1,那丢失的数就是1,如果最后一个数nums[n-1]不等于n,那丢失的数就是n,如果丢失的数在中间,对数组进行遍历

qq_45071131的博客 496

给大一新生的蓝桥杯EDA备赛规划:从电路分析到立创EDA,如何用一年时间高效备赛?

本文为大一新生提供了一份系统的蓝桥杯EDA备赛规划,从电路分析基础到立创EDA实战操作,分阶段指导如何高效备赛。内容涵盖理论学习、软件操作、PCB设计专项提升及冲刺优化策略,帮助学生在一年内全面提升电子设计能力,为竞赛做好充分准备。

weixin_31476015的博客 287

力扣(LeetCode) ——645. 错误的集合(C语言)

解题思路是使用辅助数组标记已出现数字,计算实际总和与理想总和的差值来定位错误。具体实现:1)用calloc分配标记数组;2)遍历时发现重复值记录;3)通过总和差值计算丢失值。时间复杂度O(n),空间复杂度O(n)。示例输入[1,2,2,4]输出[2,3],[1,1]输出[1,2]。该方法高效直观地解决了集合错误问题。

专注 C++ 后端开发与 Linux 系统编程,深耕 STL 原理、多线程、内存管理、网络编程与服务端开发。用通俗语言拆解晦涩知识点,持续输出高质量学习笔记、踩坑复盘与面试干货。 574

模电专题-MOS管的放大电路分析

在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。

Anitawen的博客 2万+

手把手教你用Kali Linux搭建vulntarget-a靶场环境(附详细配置步骤)

本文详细介绍了如何在Kali Linux环境下搭建vulntarget漏洞靶场,包括环境规划、虚拟化平台配置、靶机系统部署及安全工具链配置等关键步骤。通过实战演练,帮助网络安全从业者和初学者掌握专业级漏洞实验平台的搭建与管理技巧,提升安全测试能力。

weixin_29279101的博客 107

c/c++ 力扣LeetCode 645.错误的集合

题目链接 力扣 645.错误的集合 不想戳的看下图 解题思路 循环嵌套 对于这道题,有很多种方法。首先想到的,应是循环嵌套。直接for循环两边寻找相同,并求得丢失的整数。代码就不展示了,想必大家都会写。 但时间复杂度O(n2),是相当高的,对于这题的数据范围,不适合用这个方法。 map 我们想到,可以使用STL里面的map。 代码如下: class Solution { public int[] findErrorNums(int[] nums) { int result[] = new

镭射瓶的博客 342

PVT(Process Voltage Temperature)

芯片PVT

网始如芯个人博客 3万+

【C语言-刷题系列】Leetcode第645题—错误的集合

题目:集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。题目直接给我们定义好了函数。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/set-mismatch。

qq_65596720的博客 5378

上机任务一:空气质量指数 (air quality index,AQI是定量描述空气质量状况的指数。为了更好地了解和人们身体健康息息相关的天气状况,本书模拟生成500条某地区天气数据,一行样本对应一天

调整后的R平方为0.4308,考虑了模型中的自由度,它略低于多重R平方,说明模型的解释能力可能有限。总的来说,新的模型相对于之前的模型在AIC值上更优,包含了最高温度(X2)和最低温度(X3)这两个重要的预测因子,并且对AQI的解释能力较好。在表中,Df表示自由度,Sum Sq表示总平方和,Mean Sq表示均方(总平方和除以自由度),F value表示F统计量,Pr(>F)表示对应的p值。在分析这些结果时,需要关注系数的显著性(p值),系数的方向(正向或负向影响),以及系数的大小(估计值)。

Mrrunsen的博客 723

2026年数学建模国赛B题无线电干扰源的快速自动定位与清除 论文详细解析

数学建模竞赛论文无线电干扰源的快速自动定位与清除2026 年高教社杯全国大学生数学建模竞赛 B 题完整求解论文交会定位、极大极小测点优化、自适应多频道搜索与定向源恢复的统一建模模型、算法、代码、图表与验证一体化交付本文研究圆形目标区域中多个未知无线电干扰源的快速检测、定位与清除问题,建立了由误差楔交会模型、角度观测信息模型、分层勘测模型、鲁棒射线交会模型和定向覆盖反馈模型组成的统一求解框架。模型同时覆盖题目中的四个子问题:多测向射线形成的多边形定位区域及直径、第二个测点的极大极小优选、全向源自动搜索清除策略

YOLO 360

LeetCode第645题错误的集合

题目来源 题目描述 集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。 给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 示例 1: 输入: nums = [1,2,2,4] 输出: [2,3] 注意: 给定数组的长度范围是 [2, 10000]。 给定的数组是无序的 代码 class Solution {

LiuXiaoXueer的博客 199

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

人工智能机器学习基础篇】——深入详解强化学习 基础知识,理解马尔可夫决策过程(MDP)、策略、价值函数等关键概念

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1926

错误的集合(c语言)

题目链接:645. 错误的集合 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/set-mismatch/ 题目描述:集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

HBINen的博客 934

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Leetcode645. 错误的集合(哈希,数组)

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/set-mismatch 集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。 给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整...

ym & blog 150

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

力扣645错误的集合

题目: 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 C语言解法 int* findErrorNums(int* nums, int numsSize, int* returnSize){ int *a=malloc(2*sizeof(

qq_61588168的博客 788

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode //C - 645. Set Mismatch

【代码】LeetCode //C - 645. Set Mismatch。

Made in Code 1158

645. 错误的集合------LeetCode

645. 错误的集合 集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 示例 1: 输入:nums = [1,2,2,4] 输出:[2,3] 示例 2: 输入:nums = [1,1] 输出:[1,2] 代码: /** * Note: The retur

weixin_44340959的博客 208

【C刷题初阶】刷爆力扣第一弹

旋转数组中最小数字 && 密码检查 && 错误的集合

爱打酱油的新一的博客 1596

LeetCode 645. 错误的集合(C、C++、python)

集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。 给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 示例 1: 输入: nums = [1,2,2,4] 输出: [2,3] 注意: 给定...

qq_27060423的博客 427

leetcode 645 错误的集合 (Set Mismatch)

集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。 给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 示例 1: 输入: nums = [1,2,2,4] 输出: [2,3] 注意: 给定...

qq_35215641的博客 495

Leetcode 645. 错误的集合

集合 s 包含从 1 到n的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。 给定一个数组 nums 代表了集合 S 发生错误后的结果。 请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 示例 1: 输入:nums = [1,2,2,4] 输出:[2,3] 示例 2: 输入:nums = [1,1] 输出:[1,2] int* findErrorNums(int* nums, ..

m0_69909788的博客 129

LeetCode645.错误的集合

题目给出一个数组,包含1-n的整数,其中只有一个数据出现了重复,因此我们可以利用哈希表的知识,创建一个大小为n+1的数组has【n+1】,遍历记录对应下标出现的次数。③再遍历一次数组has【n+1】,若has【k】=2,则为重复出现的整数,若has【k】=0,则为丢失的整数。①函数传进来一个数的指针int* returnSize,需要在函数体内对他进行赋值,意为返回数组的大小。②遍历数组nums,记录数组值出现的次数,即has【n+1】的下标对应数组值加1。函数返回值为指向填充后的内存块的指针。

Crush_66的博客 187

Leetcode【645】牛客网【OR141】C语言 2022-2-23

1.集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。 输入:nums = [1,2,2,4] 输出:[2,3] 解法一 int* findErrorNums(int* nums, int numsSize, int* returnSize) { *re

qq_50119037的博客 696

跟英雄哥学算法

645. 错误的集合 - 力扣(LeetCode) (leetcode-cn.com) /** * Note: The returned array must be malloced, assume caller calls free(). */ int cmp (const void *pa,const void*pb) { return *(int*)pa - *(int*)pb; } int* findErrorNums(int* nums, int numsSize, int

欢迎来到我的博客,在这里我会用我的方式来讲解知识,请大家多多关照 969

LeetCode_645_数组_错误集合

原创: int* findErrorNums(int* nums, int numsSize, int* returnSize) { int *pArryVal = (int *)malloc(sizeof(int)*2); /* pArryVal[0]用来存储重复的值 和 pArryVal[1]用来存储丢失的值 */ int iArry[numsSize + 1]; /* 该数组是来存储 nums 数组中每个元素出现的次数 */ *returnSize = 2; /* 返回.

VsitorZL的博客 212
上一篇: 【C语言】OR62:倒置字符串
下一篇: 【C语言】预处理指令:#include #ifndef #define #endif
honortech
博客等级 码龄4年 369粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值