c语言力扣题目:消失的数字(有关时间复杂度O(N²)O(N))以及对异或操作符的更深入的理解(如何用人脑的十进制去考量二进制)

目录

Way One :暴力求解,时间复杂度为 O(N²)

代码1

Way Two : 时间复杂度限制到 O(N²)

代码及其详解


如题

Way One :暴力求解,时间复杂度为 O(N²)

大体思路:比如这里我们需要处理的整型数组是"3,0,1",我们可以用冒泡排序或者 qsort函数将他从大到小进行排序成"0,1,3"然后生成一个数组"0,1,2"

代码1

过于简单:不多进行赘述

int cmp(const void*p1, const void* p2)
{return *(int*)p1 - *(int*)p2;
}int disapperance(int* arr, int sz)
{int i = 0;int j = 0;int tarr[] = { 0 };for (j = 0; j <sz; j++){while (1){if (arr[i] == j){i++;j++;}else{printf("%d ", j);}break;}}
}
int main()
{int arr[3] = { 3,0,1 };int sz = sizeof(arr) / sizeof(arr[0]);qsort(arr, sz, sizeof(arr[0]), cmp);int i = 0;disapperance(arr, sz);return 0;
}

运行结果

目录

Way Two : 时间复杂度限制到 O(N)

个人感觉这个时间复杂度O(N)的题目思路有点类似于"单生狗" 
思路是这样的:首先我们得明确知道的前提条件就是异或运算符是有交换律的,比如"1^1^4^4=0",但是也可以说"1^4^1^4==0"
这一题给我们一个数组"0,3,1",找出缺少的数字2
观察法可知,题目的意思是让我们和有限有序数组数组"0,1,2,3"进行对比,找出数字"2",这个时候就得想办法让两个数组进行异或:"0^1^3^0^1^2^3=2"了

这个题目大体思路就是使用题目给的那个乱序的数字数组和我们创造的有序数组进行异或

代码及其详解

int disnum(int* arr, int sz)
{
    int x = 0;
     
    for (int i = 0; i < 3; i++)
    {
        x = x ^ arr[i]; //好像要将一个字符串先赋值给"x"然后再和我们自己创造的有序数组进行异或找出缺失的数字,
        //计算机对数字进行异或运算都是基于数字的补码然后使用"相同为零,相异为一"进行计算的,
        //然后基于此理论得到一个结论,在十进制里面"相同的数字异或为'0',0异或任何数字都等于这个任意数的本身

        // 
        //在进行大量的计算与观察后,我们得出了一条<结论>,使我们的思维可以更好地适应计算机的二进制计算(这个结论可以自己去推导,这里不进行推论)

        // 
        //也就是说有关异或 计算机在进行异或计算的时候确实会每一个阶段都得到一个值然后带入下一步 
        //但是我们大脑不是二进制,是十进制的
        //所以我们人脑去考量的话应该这么去思考:就是不到有关异或计算的最后一步都不可以把这个数值表达式算到只剩一个数
        //就像上面一个for循环计算机确实得到了一个数 但是我们大脑中只能是0^1^3这么一个数值表达式

        //然后我们这里即想要将arr[i]放入一个变量又不想改变它本身,因为0异或任何数字就等于这个数本身,所以是设置int x=0;
    }
    int j = 0;
    for (int i = 0; i <= 3; i++)
    {
        x=x^i;//然后将上面的for循环生成的那一串长数字按着这个循环与i不停的递归,相同为0,相异为1,最后是只有2了
    }
    return x;
}
int main()
{
    int arr[10] = { 0,1,3 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    int ret = disnum(arr, sz);
    printf("%d", ret);
    return 0;
}

简明运算图

只看红色字体就可以了 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# winform chart 单个柱形设置

目前实现到第三张图形,有可以实现四张图形的请大佬帮助。 实现到第三张图的设置如下 private void Form1_Load(object sender, EventArgs e) {// 隐藏标题//chart1.Titles.Clear();// 隐藏图例chart1.Legends.Clear();// 隐藏 Y 轴的网格线和标签chart1.ChartAreas[0].AxisY.…

ansible在ubuntu下的安装和使用

ansible在ubuntu下的安装和使用 本文目录 ansible在ubuntu下的安装和使用安装和配置虚拟机配置安装和验证 简单使用创建 ansible cfg 和 inventory 文件创建剧本并执行使用 ansible vault 加密 安装和配置 中文文档&#xff1a;http://www.ansible.com.cn/docs/intro_installa…

试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B) c#调用动态库是报错 目前平台改为x64

字符串函数内存函数(从零到一)【C语言】

长度不受限制的字符串函数&#xff1a;strcpy,strcat,strcmp 长度受限制的字符串函数&#xff1a;strncpy,strncat,strncmp strlen strlen函数是库函数中我们最常使用的函数&#xff0c;它可以求出字符串的长度(不包含‘\0’) 使用方法 通过前面对strlen函数的模拟实现我们知…

智能优化算法应用:基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于饥饿游戏算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.饥饿游戏算法4.实验参数设定5.算法结果6.…

xcode无线真机调试详细图文步骤

步骤一、 步骤二&#xff1a; 步骤三&#xff1a; 配置完到这里&#xff0c;点击真机右键&#xff0c;菜单栏并未出现connect via ip address 选项&#xff0c;也没出现无线连接的小地球图标&#xff0c;别慌&#xff0c;接着进行下一步操作即可。 步骤四&#xff1a; 1.打开…

【Linux】冯诺依曼体系结构与操作系统及其进程

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解冯诺依曼体系结构与操作系统&#xff0c;掌握…

使用ultralytics(YOLOv8)实现RT-Detr

b站视频&#xff1a;https://www.bilibili.com/video/BV12C4y1S75H/ 1 使用ultralytics&#xff08;YOLOv8&#xff09;实现RT-Detr https://github.com/ultralytics/ultralytics/blob/a5735724c54a9f5bcb239c151fefbd1337d7123d/docs/zh/models/rtdetr.md 2 安装 YOLOv8安装…

分享一个项目——Sambert UI 声音克隆

文章目录 前言一、运行ipynb二、数据标注三、训练四、生成总结 前言 原教程视频 项目链接 运行一个ipynb&#xff0c;就可操作 总共四步 1&#xff09;运行ipynb 2&#xff09;数据标注 3&#xff09;训练 4&#xff09;生成 一、运行ipynb 等运行完毕后&#xff0c;获得该…

【powershell】Windows环境powershell 运维之历史文件压缩清理

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

关于“Python”的核心知识点整理大全31

目录 12.4.2 在屏幕上绘制飞船 alien_invasion.py ​编辑12.5 重构&#xff1a;模块 game_functions 12.5.1 函数 check_events() game_functions.py alien_invasion.py 12.5.2 函数 update_screen() game_functions.py alien_invasion.py 12.6 驾驶飞船 12.6.1 响应…

虚拟机类加载机制

虚拟机类加载机制 什么是虚拟机的类加载机制&#xff1f; Java虚拟机将描述类的Class文件加载到内存中&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这个过程叫做虚拟机的类加载机制 类加载的时机 一个类…

【MATLAB】史上最全的25种信号分解算法全家桶

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 【MATLAB】EMD 信号分解算法 EMD 是一种信号分解方法&#xff0c;它将一个信号分解成有限个本质模态函数 (EMD) 的和&#xff0c;每个 EMD 都是具有局部特征的振动模式。EMD 分解的主要步骤如下&#xff1a; 将信号的…

机器学习数据的清洗,转化,汇总及建模完整步骤(基于Titanic数据集)

目录 介绍&#xff1a; 一、数据 二、检查数据缺失 三、数据分析 四、数据清洗 五、数据类别转化 六、数据汇总和整理 七、建模 介绍&#xff1a; 线性回归是一种常用的机器学习方法&#xff0c;用于建立一个输入变量与输出变量之间线性关系的预测模型。线性回归的目标…

3-10岁孩子语文能力培养里程碑

文章目录 基础能力3岁4岁5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&#xff09; 阅读推荐&父母执行3岁4-5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&a…

Elasticsearch:什么是文本分类?

文本分类定义 - text classification 文本分类是一种机器学习&#xff0c;它将文本文档或句子分类为预定义的类或类别。 它分析文本的内容和含义&#xff0c;然后使用文本标签为其分配最合适的标签。 文本分类的实际应用包括情绪分析&#xff08;确定评论中的正面或负面情绪&…

Linux操作系统(ACL)

ACL (针对特殊用户的特殊权限) 访问控制列表&#xff0c;可以针对文件和目录 ACL的真正效果主要体现在对文件的操作上 1. 如何查看ACL信息&#xff1a;getfacl 文件名(文件路径) 2. 如何设置普通文件ACL信息&#xff1a;setfacl -m u:用户名&#xff1a;权限 文件名 现在要求…

JVM垃圾收集器三色标记算法

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法&#xff0c;这种算法没有什么新的思想&#xff0c;只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代&#xff0c;这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比…

NFT获工信部首肯!“符合中国国情”的Web3.0发展战略即将问世!

今年3月&#xff0c;香港立法会议员吴杰庄在出席中国全国两会时&#xff0c;提出《关于推动Web3.0产业发展的提案》&#xff0c;针对中国加强Web3.0技术研发、建立标准和培养人才等几方面提岀意见。 本月19日&#xff0c;中国工信部针对该提案提交答复&#xff0c;称该部高度重…

关于“Python”的核心知识点整理大全33

目录 12.8.3 将子弹存储到编组中 alien_invasion.py 注意 12.8.4 开火 game_functions.py 12.8.5 删除已消失的子弹 alien_invasion.py 12.8.6 限制子弹数量 settings.py game_functions.py 12.8.7 创建函数 update_bullets() game_functions.py alien_invasion.py…