【05】消失的数字

简介: 【05】消失的数字

hellohello~这里是土土数据结构学习笔记🥳🥳

1.消失的数字分析

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?

思路1

先求出数组所有数的和sum1,因为是0~n连续的,只要一个数没有两个,所有我们求出所有两个0 ~n的数的和sum2,再将它们相减即可得到消失的数字🥳🥳

图解如下:


思路2

利用位操作符来求解,详情点击这里查看:
位与移位操作符详解

按位异或操作符:相同为假,相异为真

而两个相同的数字按位异或得出的结果却是0,因为它们所有位都相同

2.消失的数字完整代码求解

方法一:

int missingNumber(int* nums, int numsSize)
{
int sum = 0;
for(int i = 0; i<numsSize;i++)//数组所有数求和
{
    sum+=*(nums+i);
}
for(int i = 0; i<=numsSize;i++)//假设0~n的数都有两个
{
    sum-=i;//少了一个数的和减去没有少的得到消失的数字的负数
}
return -sum;//返回相反数即可
}

结果如下:

这里的时间复杂度为O(n),符合题意🥳🥳,上面for循环为n,下面也为n,加起来2n,也就是O(n).

方法二:

int missingNumber(int* nums, int numsSize)
{
    int res = 0;
    for (int i = 0; i < numsSize; i++) 
    {
        res ^= nums[i];
    }
    for (int i = 0; i <= numsSize; i++) 
    {
        res ^= i;
    }
        
    return res;
}

同样这里的时间复杂度为O(n),符合题意🥳🥳,上面for循环为n,下面也为n,加起来2n,也就是O(n).

3.结语

✨✨以上就是消失的数字的两种题解啦~ 一种是求和求解,另一种是利用按位异或的特点来求解,两种方法有异曲同工之处,并且时间复杂度都为O(n),完全符合题意,大家都get到了吗?🥰🥰

以上就是C语言消失的数字所有内容啦~ 大家有什么问题或者更好的方法欢迎写在评论区或私信我哦~ 完结撒花~🥳🥳🎉🎉🎉

相关文章
|
监控 Cloud Native API
利用声明式API管理提高开发效率
【10月更文挑战第8天】声明式API管理通过声明式配置简化了API的定义和管理,提高了开发效率和可维护性。本文介绍了声明式API管理的核心优势、实施步骤及其在微服务、云原生应用和跨团队协作中的应用,并提供了实战技巧。
|
机器学习/深度学习 供应链 算法
如何从实验中获得更多?——AB实验的异质性分析实践
本文阐述了异质性分析的基本原理和方法、具体实践流程、落地等情况,总结实践经验,也期待更多交流和探讨。
|
MySQL 关系型数据库 存储
【MySQL】 DATE_FORMAT() 格式化时间
【MySQL】 DATE_FORMAT() 格式化时间 我们会在项目中遇到这样一种需要,时间存储的时候存的是datetime,也就是年月日,时分秒,但是我们在使用的时候只需要使用年月日的时间,如果我们查询出成千上万条数据,使用代码转化可能会降低效率以及使得代码变得更加繁琐,这时候我们可以考虑在数据源就将其转化。
9127 0
|
Java 测试技术
带你读《2022技术人的百宝黑皮书》——合理使用线程池以及线程变量(8)
带你读《2022技术人的百宝黑皮书》——合理使用线程池以及线程变量(8)
141 1
|
存储 弹性计算 安全
阿里云ECS实例规格族命名规则
阿里云ECS实例规格族命名规则,阿里云服务器ECS分为多种实例规则,常见的有计算型c、通用型g和内存型r等,large代表vCPU核数,re内存增强、se代表存储增强、ne代表网络增强等,阿里云百科分享阿里云服务器ECS实例命名规则及举例说明:
647 0
阿里云ECS实例规格族命名规则
|
编解码 计算机视觉
FFmpeg从入门到精通:SEI那些事
本文是“FFmpeg从入门到精通”系列的第三篇,由金山云供稿,并授权LiveVideoStack发布。
2783 0
|
Java 调度 人工智能
定时任务发展史(一)
定时任务是互联网行业里最常用的服务之一,本文给大家介绍定时任务在我司的发展历程。 linux系统中一般使用crontab命令来实现,在Java世界里,使用最广泛的就是quartz了。我司使用quartz就已经升级了三代,每一代在上一代系统之上有所优化,写这篇文章一方面介绍一下quartz的使用,另一方面可以根据此项目的变迁反应出我司平台架构升级的一个缩影。
887 0
|
应用服务中间件 程序员 容器
走进JavaWeb技术世界7:Tomcat中的设计模式
本文首发于我的个人公众号:程序员江湖     欢迎大家关注我的微信公众号:程序员江湖 努力成为最有影响力的程序员自媒体,专注于面试,职场,个人提升三大主题。