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

news/2025/2/3 11:54:36 标签: 算法, 数据结构, c语言

消失的数字

数组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.niftyadmin.cn/n/5840770.html

相关文章

25寒假算法刷题 | Day1 | LeetCode 240. 搜索二维矩阵 II,148. 排序链表

目录 240. 搜索二维矩阵 II题目描述题解 148. 排序链表题目描述题解 240. 搜索二维矩阵 II 点此跳转题目链接 题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到…

Vue3.0实战:大数据平台可视化(附完整项目源码)

文章目录 创建vue3.0项目项目初始化项目分辨率响应式设置项目顶部信息条创建页面主体创建全局引入echarts和axios后台接口创建express销售总量图实现完整项目下载项目任何问题都可在评论区,或者直接私信即可。 创建vue3.0项目 创建项目: vue create vueecharts选择第三项:…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.13 零拷贝技巧:as_strided的魔法与风险

2.13 零拷贝技巧&#xff1a;as_strided的魔法与风险 目录 #mermaid-svg-ieI7OVDIdPJxsrfJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ieI7OVDIdPJxsrfJ .error-icon{fill:#552222;}#mermaid-svg-ieI7OVDIdPJx…

w186格障碍诊断系统spring boot设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

使用 Numpy 自定义数据集,使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数

1. 导入必要的库 首先&#xff0c;导入我们需要的库&#xff1a;Numpy、Pytorch 和相关工具包。 import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.metrics import accuracy_score, recall_score, f1_score2. 自定义数据集 …

无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

mklink : 无法将“mklink”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 行:1 字符: 1这是因为 在老版本系统中可以是用mklink来创建软连接&#xff0c;但在最…

Cypher入门

文章目录 Cypher入门创建数据查询数据matchoptional matchwhere分页with 更新数据删除数据实例&#xff1a;好友推荐 Cypher入门 Cypher是Neo4j的查询语言。 创建数据 在Neo4j中使用create命令创建节点、关系、属性数据。 create (n {name:$value}) return n //创建节点&am…

使用Pygame制作“太空侵略者”游戏

1. 前言 在 2D 游戏开发中&#xff0c;“太空侵略者”是一款入门难度适中、却能覆盖多种常见游戏机制的项目&#xff1a; 玩家控制飞船&#xff08;Player&#xff09;左右移动&#xff0c;发射子弹。敌人&#xff08;Enemy&#xff09;排列成一行或多行&#xff0c;从屏幕顶…