力扣---LeetCode面试题17.04.消失的数字

news2025/1/15 23:04:01

文章目录

  • 前言
  • 面试题17.04.消失的数字
    • 方法一:
    • 方法二:
      • 异或解析:
    • 方法三:
  • 总结


前言

我有我要赶去的远方,风雨兼程披星戴月
本章的内容是力扣每日随机一题的部分方法的解析


提示:以下是本篇文章正文内容,下面案例可供参考

面试题17.04.消失的数字

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。在O(n)时间内完成
在这里插入图片描述

方法一:

*先排序(用qsort函数排序),依次查找,如果下一个数不是上一个数+1,那么上一个数+1就是消失的数字;
不过这个方法并不符合O(n);

#include<stdio.h>
int cmp_int(void* p1, void* p2)
{
	return *(int*)p1 - *(int*)p2;
}
int main()
{
	int nums[9] = { 2,3,1,4,6,7,9,10,8 };
	int numsSize = sizeof(nums) / sizeof(nums[0]);
	qsort(nums, numsSize, sizeof(nums[0]), cmp_int);
	int i = 0;
	/*for (i = 0; i < numsSize; i++)
	{
		printf("%d ", nums[i]);
	}*/
	int x = 0;
	while (nums[i])
	{
		if (nums[i] + 1 != nums[i + 1])
		{
			x = nums[i]+1;
			break;
		}
		else
		{
			i++;
		}
	}
	printf("%d\n", x);
	return 0;
}

方法二:

用异或思路:先将数组中所有的数异或在一起,然后赋值给x,再将x与(0-n)异或起来得到的数字就是消失的数字,这种方法是O(n)符合要求

int missingNumber(int* nums, int numsSize)
{
    int i=0;
    int x=0;
    for(i=0;i<numsSize;i++)
    {
        x=x^nums[i];
    }
    for(i=0;i<numsSize+1;i++)
    //注意这里一定要+1因为numsSize是数组中元素个数,它消失了一个数字所以其实应该是numsSize+1
    {
        x^=i;
    }
    return x;
}

在这里插入图片描述

异或解析:

1.1 运算规则

相同为0,不同为1,即
1 ^ 1 = 0
0 ^ 0 = 0
1 ^ 0 = 1
由运算规则可知,任何二进制数与零异或,都会等于其本身,即 A ^ 0 = A。

1.2 异或性质

(1)交换律: A ^ B = B ^ A

(2)结合律: ( A ^ B ) ^ C = A ^ ( B ^ C )

(3)自反性: A ^ B ^ B = A (由结合律可推: A ^ B ^ B = A ^ ( B ^ B ) = A ^ 0 = A)

方法三:

将0~n中所有的数字加在一起(一个等差数列公式计算),得到一个数然后减去数组中的数字,最后得到的就是消失的那个数字,这种方法是O(n)也符合要求

int missingNumber(int* nums, int numsSize)
{
    int x=((1+numsSize)*numsSize)/2;
    int i=0;
    for(i=0;i<numsSize;i++)
    {
        x-=nums[i];
    }
    return x;
}

总结

Ending,今天的力扣每日一题内容就到此结束啦,如果后续想了解更多,就请关注我吧,一键三连,还有许多种方法没有写出希望各位佬补充哦~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全防御 --- 恶意代码、防病毒

一、恶意代码 1、按照传播方式分类 &#xff08;1&#xff09;病毒 概念&#xff1a;病毒是一种基于硬件和操作系统的程序&#xff0c;具有感染和破坏能力&#xff0c;这与病毒程序的结构有关。病毒攻击的宿主程序是病毒的栖身地&#xff0c;它是病毒传播的目的地&#xff0…

2023.04.09 学习周报

文章目录摘要文献阅读1.题目2.摘要3.简介4.本文贡献5.传统方法6.IDLSTM-EC7.实验7.1 数据集7.2 基线7.3 评估指标7.4 实验结果8.结论9.展望MDS降维算法1.基本思想2.优化目标3.数学推导4.算法流程马尔可夫链1.随机过程2.简介3.数学定义4.转移概率矩阵5.状态转移矩阵的稳定性Navi…

Python 访问 PostgreSQL

文章目录一、前言1.1 概述1.2 什么是 Psycopg二、操作 PostgreSQL2.1 连接数据库2.2 异常处理2.3 创建表2.4 INSERT 操作2.5 SELECT 操作2.6 UPDATE 操作2.7 DELETE 操作2.8 事务管理2.9 调用存储函数2.10 批量操作一、前言 1.1 概述 Python 是一种高级、通用的解释型编程语言…

排序算法之希尔排序

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;快给我点赞赞&#x1f497; 文章目录1. 希尔排序2. 算法思路3. 算法实现4. 算法性能分析&#x1f49e;总结&#x1f49e;1. 希尔排…

自己再造一个大规模预训练语言模型?可以的

1. 引言 自ChatGPT发布至今已近半年&#xff0c;一路走来&#xff0c;我们可以清楚地看到的一个趋势是&#xff0c;到了下半年&#xff0c;每位研究者都会拥有一个类似ChatGPT的模型。这种现象与当年BERT推出后&#xff0c;各种BERT变体层出不穷的情况颇为相似。实际上&#x…

Prophet学习(一) Python API实现

目录 Python API 详细介绍 完整代码&#xff1a; Python API 详细介绍 Prophet遵循sklearn模型API。我们创建Prophet类的实例&#xff0c;然后调用它的fit和predict方法。 Prophet的输入总是一个有两列的数据帧:ds和y。ds(日期戳)列应该是Pandas期望的格式&#xff0c;理想…

APIs --- DOM事件进阶

1. 事件流 事件流指的是事件完整执行过程中的流动路径 任意事件被触发时总会经历两个阶段&#xff1a;【捕获阶段】和【冒泡阶段】 事件捕获 概念&#xff1a;从DOM的根元素开始去执行对应的事件&#xff08;从外到里&#xff09; 捕获阶段是【从父到子】的传导过程 代码&…

基于SSM框架开发的小区物业管理系统JavaWeb项目源码

随着信息化时代的到来&#xff0c;小区的管理也日趋完善&#xff0c;开始逐步采用信息化系统对小区业主进行管理&#xff0c;对一些业务进行线上处理。小区物业管理系统正是为了满足这种需求而诞生的&#xff0c;也有不少同学会选择该课题作为毕业设计项目选题&#xff0c;下面…

【Unity入门】9.帧更新

【Unity入门】帧更新 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;获取挂载对象的属性信息 &#xff08;1&#xff09;获取名字信息 首先在C#代码中&#xff0c;this代表着脚本本身&#…

MySQL 事务和视图

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

Machine Learning-Ex3(吴恩达课后习题)Multi-class Classification and Neural Networks

目录 1. Multi-class Classification 1.1 Dataset 1.2 Visualizing the data 1.3 Vectorizing Logistic Regression 1.3.1 Vectorizing the cost function&#xff08;no regularization&#xff09; 1.3.2 Vectorizing the gradient&#xff08;no regularization&#…

【ESP-IDF】如何安装ESP-IDF?

【ESP-IDF】如何安装ESP-IDF&#xff1f;Windows命令行安装ESP-IDFVs Code 图形IDE首先参考这篇视频&#xff1a;https://www.bilibili.com/blackboard/webplayer/embed-whitelist-other.html?aid520120377&bvidBV1hM411k7zz&cid888070526&page1本篇教程以Windows…

vue2路由守卫

全局前置_路由守卫 以前古代有一个职称叫御前侍卫&#xff1a;保护君王的安全&#xff0c;而路由守卫就是保护路由的安全&#xff08;权限&#xff09; 就是在Home组件中&#xff0c;我们需要先校验内容中的school是否满足要求&#xff0c;才能展示组件&#xff0c;否则不展示…

SpringBoot项目中遇到的订单支付超时未支付关闭订单的解决方案

1、扫表轮循 定时任务 > 获取数据 > 数据层 > 筛选出过期的数据 > 批量关闭超时订单 优点&#xff1a;实现简单、适用于小项目、数据量比较少 缺点&#xff1a;订单量过大的时候查询和修改数据库压力大、服务器内存消耗大、IO瓶颈 2、Redis懒删除 用户获取订单信…

java SSM选房管理系统idea开发mysql数据库java编程计算机网页源码maven项目

一、源码特点 SSM选房管理系统是一套完善的完整医院类型系统&#xff0c;结合SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系…

Twitter的推荐系统开源了,Twitter的推荐系统是什么样的呢?Twitter推荐系统的架构说明

Twitter的推荐系统开源了&#xff0c;Twitter的推荐系统是什么样的呢&#xff1f;Twitter推荐系统的架构说明01. Twitter的推荐系统是什么样的&#xff1f;02. Candidate Sources2.1 In-Network Source2.2 Out-of-Network Sources03. Ranking04. Heuristics, Filters, and Prod…

VR虚拟核电设备拆除模拟培训降低风险

核电站设备拆除是一项高危、复杂的任务&#xff0c;因此进行安全、有效的培训至关重要。为此&#xff0c;将VR虚拟现实技术应用于核电厂中&#xff0c;通过100%模拟还原真实的拆除操作场景&#xff0c;广泛应用到核电厂展示、巡检和拆除等环节中&#xff0c;极大提高了生产效率…

单片机学习之中断与定时/计数器

记录学习中断的使用。 1. 使用工具 使用开发板&#xff1a; 普中科技开发板 编译软件&#xff1a; keil 2. 复习中断及相关概念 CPU在处理 事件A 时&#xff0c;中断源 发出中断请求&#xff0c;请求cpu处理事件B &#xff0c;cpu 中断 当前工作&#xff0c;转去处理事件B&a…

HTML5 视频 Video

文章目录HTML5 视频 VideoWeb站点上的视频浏览器支持HTML5 (视频)- 如何工作视频格式与浏览器的支持视频格式HTML5 \<video> - 使用 DOM 进行控制HTML5 Video 标签HTML5 视频 Video 很多站点都会使用到视频. HTML5 提供了展示视频的标准。 Web站点上的视频 直到现在&am…

详解数据恢复多少一个g以及如何恢复

整理电脑硬盘数据的时候不小心删除了重要的文件该如何么恢复呢?硬盘修复数据恢复价格都爱的贵不贵?今天小编就来给大家重点当前市场上硬盘数据恢复的价格相关内容&#xff0c;那么数据恢复多少钱一个g呢?下面就来给大家揭晓一下数据恢复多少钱一个g以及如何恢复。 工具/原料…