面试题-消失的数字-异或

news/2025/2/3 5:51:57/

消失的数字

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

int missingNumber(int* nums, int numsSize) {}

分析

本题对时间复杂度的要求是O(n)。
利用异或相同为0,不同为1;也就是相同的数异或为0;任何数异或0,结果为原来的数。
思路1:单身狗思想:将数组中所有数异或起来的值,再与0~numsSize之间的值异或,最后的结果就是没出现过的数。

注:
异或符合交换律和结合律
1 ^ 1 ^ 3 = 3
1 ^ 3 ^ 1 = 3

思路2:公式法:0~numsSize的和减数组元素的和,结果就是没出现过的数。

代码

代码1

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

代码解释:
因为任何数异或0为原数,所以使用val=0为原始值。
又因为异或符合交换律和结合律,所以
val=0 ^ ( 0 ^ 1 ^ 3 ) ^ ( 0 ^ 1 ^ 2 ^ 3 ) = 2

代码2:

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

http://www.ppmy.cn/news/1568879.html

相关文章

(笔记+作业)书生大模型实战营春节卷王班---L1G1000 书生大模型全链路开源体系

学员闯关手册&#xff1a;https://aicarrier.feishu.cn/wiki/QtJnweAW1iFl8LkoMKGcsUS9nld 课程视频&#xff1a;https://www.bilibili.com/video/BV13U1VYmEUr/ 课程文档&#xff1a;https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/Python 关卡作业&#xff1a;htt…

网络工程师 (8)存储管理

一、页式存储基本原理 &#xff08;一&#xff09;内存划分 页式存储首先将内存物理空间划分成大小相等的存储块&#xff0c;这些块通常被称为“页帧”或“物理页”。每个页帧的大小是固定的&#xff0c;例如常见的页帧大小有4KB、8KB等&#xff0c;这个大小由操作系统决定。同…

VSCode 中 Git 扩展的使用详解

VSCode 中 Git 扩展的使用详解 VSCode 内置了 Git 版本控制功能&#xff0c;支持 Git 分支管理、提交&#xff08;commit&#xff09;、推送&#xff08;push&#xff09;、拉取&#xff08;pull&#xff09;、合并&#xff08;merge&#xff09;、回滚&#xff08;revert&…

Python魔法函数

在Python中&#xff0c;的确有“魔法函数”&#xff08;Magic Methods&#xff09;这种说法&#xff0c;也被称为特殊方法&#xff08;Special Methods&#xff09;。这些函数的名称以双下划线开始和结束&#xff0c;例如 __init__、__len__ 等。它们为Python提供了一种约定俗成…

搜索引擎快速收录:关键词布局的艺术

本文来自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/21.html 搜索引擎快速收录中的关键词布局&#xff0c;是一项既精细又富有策略性的工作。以下是对关键词布局艺术的详细阐述&#xff1a; 一、关键词布局的重要性 关键词布局影响着后期页面…

MATLAB R2023b下载与安装教程

MATLAB R2023b 软件下载软件介绍安装步骤参考链接 软件下载 软件名称&#xff1a;MATLAB 2023b软件语言&#xff1a;简体中文软件大小&#xff1a;12.16G系统要求&#xff1a;Windows10或更高&#xff0c;64位操作系统硬件要求&#xff1a;CPU3GHz &#xff0c;RAM16G或更高下…

JVM对象分配内存如何保证线程安全?

大家好&#xff0c;我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全?】面试题。希望对大家有帮助&#xff1b; JVM对象分配内存如何保证线程安全? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;对象的内存分配是通过堆内存进行的。…

qwen2.5-vl:阿里开源超强多模态大模型(包含使用方法、微调方法介绍)

1.简介 在 Qwen2-VL 发布后的五个月里&#xff0c;众多开发者基于该视觉语言模型开发了新的模型&#xff0c;并向 Qwen 团队提供了极具价值的反馈。在此期间&#xff0c;Qwen 团队始终致力于打造更具实用性的视觉语言模型。今天&#xff0c;Qwen 家族的最新成员——Qwen2.5-VL…