leetcode消失的数字

news2024/11/25 4:40:30

题目描述

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

示例 1:

输入:[3,0,1]
输出:2

leetcode链接:消失的数字

⭕️ 思路1:

/*
    思路1:开辟一个 n + 1 的空间,每个元素初始化为-1,遍历目标数组,把目标数组当前元素
        当作新开辟数组的下标并存入当前元素。
            最后遍历新开辟的数组,那个是-1的元素下标就是消失的数字
        [3,0,1]
        [-1 , -1 , -1 , -1]
          0    1    2    3
        [0 , 1 , -1 , 3]
        result : 2
*/
int missingNumber(int* nums, int numsSize){
    int * res = (int *)malloc(sizeof(int) * (numsSize + 1));
    for (int i = 0; i < numsSize + 1; i++) {
        res[i] = -1;
    }
    for (int i = 0; i < numsSize; i++) {
        res[nums[i]] = nums[i];
    }
    for (int i = 0; i < numsSize + 1; i++) {
        if (res[i] == -1) {
            free(res);
            return i;
        }
    }
    free(res);
    return 0;
}

第一种思路时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( N ) O(N) O(N)

⭕️ 思路2:

/*
    思路2:异或的方式,给一个变量res与目标数组中的所有元素异或,在与0 - numsSize + 1所有元素异或
    因为目标数组中少一个元素,所以最后res的值就保存的是消失的数字。
    [3 , 0 , 1]
    [0 , 1 , 2 , 3]
    3 ^ 3 = 0 -> 0 ^ 0 = 0 -> 1 ^ 1= 0 -> 0 ^ 2 = 2
    result: 2
*/
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 + 1; i++) {
        res ^= i;
    }

    return res;
}

第二种思路时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( 1 ) O(1) O(1)

⭕️ 思路3:

/*
    思路3:等差数列求和公式 ((首项+尾项)*项数) / 2,用0 - n之间的求和结果减去目标数组的
    每一个元素即可得到消失的数字
*/
int missingNumber(int* nums, int numsSize){
    int resSum = ((0 + numsSize) * (numsSize + 1)) / 2;
    int sum = 0;
    for (int i = 0; i < numsSize; i++) {
        sum += nums[i];
    }
    return resSum - sum;
}

第三种思路时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( 1 ) O(1) O(1)

在这里插入图片描述

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

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

相关文章

举例说明什么是卷积神经网络

卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种深度学习模型&#xff0c;主要应用于计算机视觉任务&#xff0c;如图像分类、物体检测等。它通过卷积层、池化层和全连接层等组件来实现对图像的特征提取和分类。 现在我们以一个简单的图像分类任…

【算法题】动态规划中级阶段之跳跃游戏、最大子数组和、解码方法

动态规划中级阶段 前言一、最大子数组和1.1、思路1.2、代码实现 二、跳跃游戏2.1、思路2.2、代码实现 三、解码方法3.1、思路3.2、代码实现 总结 前言 动态规划&#xff08;Dynamic Programming&#xff0c;简称 DP&#xff09;是一种解决多阶段决策过程最优化问题的方法。它是…

计算机组成原理(期末或考研备考)- 存储器(RAM和ROM重点讲解)

存储器分类 主存储器&#xff1a;也称内存&#xff0c;存放正在运行程序和数据&#xff0c;CPU可以直接访问&#xff0c;容量存储较小&#xff0c;价格较贵。辅助存储器&#xff1a;也称外存&#xff08;绝大多数是磁盘&#xff09;&#xff0c;存放电脑的应用程序等&#xff0…

CentOS7使用Nginx部署前后端分离项目

CentOS7使用Nginx部署前后端分离项目 CentOS7安装使用Nginx1.安装1.1下载1.2 检验服务器上是否有nginx1.3 解压安装1.4 验证 2.部署2.1基本知识2.1.1常用命令2.1.2配置文件 2.2 配置效果前端后端 CentOS7安装使用Nginx 本文使用的nginx版本为1.22.1 Nginx发布版本分为主线版本…

Ant-Design 中a-transfer穿梭框 组件的使用

这段代码是一个包含模态框&#xff08;Modal&#xff09;和穿梭框&#xff08;Transfer&#xff09;的Vue组件。下面我会逐行解释代码的含义。 <a-modaltitle"合并":visible"visible"ok"handleOk"cancel"handleCancel"width"1…

基于51单片机串口加密系统(分主机从机)

目录 基于51单片机串口加密系统&#xff08;分主机从机&#xff09;一、原理图二、部分代码三、视频演示 基于51单片机串口加密系统&#xff08;分主机从机&#xff09; 功能&#xff1a; 1.通过两个单片机串口实现信息的加密和解密 2.按键完成信息的选择和发送 3.通过屏幕实时…

【Python】列表和元组

文章目录 一. 概念介绍二. 列表1. 创建列表2. 访问元素3. 切片操作4. 列表的遍历4.1 范围-for4.2 普通的 for 循环4.3 while 循环 5. 插入元素5.1 append() 方法5.2 insert() 方法 6. 删除元素6.1 pop() 方法6.2 remove() 方法 7. 查找元素7.1 in 和 not in 操作符7.2 index() …

【Linux】MHA高可用配置及故障切换

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 MHA高可用配置及故障切换 MHA高可用配置及故障切换MHA概述MHA 的组成MHA 的特点 搭建 MySQL MHA1&#xff0e;Master、Slave1、Slave2 节点上安装 mysql5.72&#xff0e;修改…

电压放大器驱动感性负载有哪些特点

电压放大器是一种常见的信号放大器&#xff0c;广泛应用于各种电子设备。当电压放大器需要驱动感性负载时&#xff0c;需要采取一些特殊措施来确保系统的稳定和可靠性。 感性负载是指由电感器构成的电路元件&#xff0c;它在电路中起到了储存能量的作用。感性负载可以分为两类&…

Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?

这个也是线上非常常见的一个问题&#xff0c;就是多客户端同时并发写一个 key&#xff0c;可能本来应该先到的 数据后到了&#xff0c;导致数据版本错了&#xff1b;或者是多客户端同时获取一个 key&#xff0c;修改值之后再写回去&#xff0c; 只要顺序错了&#xff0c;数据就…

阵列信号处理笔记(3):阵列调向、栅瓣、半功率波束带宽、端射阵列

阵列信号处理笔记 文章目录 阵列信号处理笔记阵列调向栅瓣调向对方向图的影响调向对HPBW的影响工程相关MATLAB代码阵列调向u域平移的动图 θ \theta θ域调向&#xff0c; θ 0 ∘ \theta 0^{\circ} θ0∘、 θ 6 0 ∘ \theta 60^{\circ} θ60∘、 θ 13 5 ∘ \theta 135^{\…

信号链噪声分析2

目录 概要 整体架构流程 技术名词解释 2.绘制信号链的简化原理图 技术细节 小结 概要 提示&#xff1a;这里可以添加技术概要 本文介绍对高速宽带宽信号链进行噪声性能理论分析的各个步骤。尽管选择了一个特 定信号链&#xff0c;但介绍的这些步骤适用于所有类型的信号链…

uniapp 引入腾讯地图解决H5端接口跨域

一、申请腾讯地图key 进入腾讯地图开放平台 二、引入腾讯地图 1. 安装 vue-jsonp npm install --save vue-jsonp 2.在 main.js 中使用 import { VueJsonp } from vue-jsonp; Vue.use(VueJsonp); 3.获取定位 // 获取当前位置 getLocation() {let _this this;uni.getLocation…

【C#】云LIS检验医学信息系统源码

系统基于云计算为医院机构改善患者服务质量提供了强有力的支持&#xff0c;“以患者为核心”这一理念得到了充分实现&#xff0c;基于云计算的高效区域医疗信息服务&#xff0c;会为医疗行业带来跨时代的变革。 一、使用技术框架说明 开发语言&#xff1a;C# 6.0、JavaScript …

360手机快充判断 360手机充电异常 360手机提示电池温度过低

360手机快充判断 360手机充电异常 360手机提示电池温度过低 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【前言】 因360手机&#xff0c;除N7代部分机型外&#xff0c;其它均为micro usb充电接口&#xff1b;系统…

微信小程序editor富文本编辑器 有关图片的属性

微信小程序editor富文本编辑器 有关图片的属性 属性类型默认值必填说明show-img-sizebooleanfalse否点击图片时显示图片大小控件show-img-toolbarbooleanfalse否点击图片时显示工具栏控件show-img-resizebooleanfalse否点击图片时显示修改尺寸控件 详细请看&#xff1a;edito…

基于Nova的MinRoot VDF实现

1. 引言 前序博客有&#xff1a; Nova代码解析 代码见&#xff1a; https://github.com/Microsoft/Nova&#xff08;Rust&#xff09; 有多种类型的VDF算法&#xff1a; 同一类型的VDF&#xff0c;根据所选择的曲线不同&#xff0c;所使用的参数也有所不同&#xff1a; …

基于matlab使用点特征匹配稳定从抖动平台捕获的视频(附源码)

一、前言 此示例演示如何稳定从抖动平台捕获的视频。稳定视频的一种方法是跟踪图像中的显著特征&#xff0c;并将其用作锚点以消除与其相关的所有扰动。但是&#xff0c;此过程必须了解第一个视频帧中这种显着特征的位置。在此示例中&#xff0c;我们探索了一种无需任何此类先…

rz、sz常见报错怎么解决?

使用shell和mobaxterm 中上传下载文件遇到的问题 常见报错一&#xff1a; 首先要使用Ctrlx 来退出&#xff0c;或者等待一会&#xff1b; 然后重新输入sz 要下载的文件名 空格 ,然后按ctrl右键&#xff0c;选择如下选项 常见错误二&#xff1a; sz还有一些参数&#xff0…

java之路——带你了解Hibernate与基本过程

文章目录 前言一、Hibernate用来干嘛的二、Hibernate与mybatisHibernate的基本开发步骤 前言 Hibernate框架的发展可以追溯到2001年&#xff0c;它在过去的几年里获得了广泛的应用和持续的发展。 其中的发展演变&#xff1a; 初期版本&#xff08;2001-2006年&#xff09;&am…