leetcode消失的数字

题目描述

数组 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 = 2result: 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.hqwc.cn/news/7933.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年无线蓝牙耳机排行榜,十款无线蓝牙耳机品牌推荐

蓝牙耳机作为现代生活必备的电子产品之一&#xff0c;我们在选购时的选择就显得尤为重要。随着各大科技公司对蓝牙耳机功能的不断完善&#xff0c;用户对于耳机的期望也越来越高&#xff0c;音质、性能、降噪、舒适度等方面都成为了用户选择蓝牙耳机时考虑的因素。接下来我们一…

C++ 数据结构B 树

目录 1. 常见的搜索结构 2. B树概念 3. B-树的插入分析 4. B-树的插入实现 4.1 B-树的节点设计 4.2 插入key的过程 4.4 B-树的简单验证 4.5 B-树的性能分析 4.6 B-树的删除 5. B树和B*树 5.1 B树 5.2 B*树 5.3 总结 6. B-树的应用 6.1 索引 6.2 MySQL索引简介 6…

计算机网络————运输层

文章目录 概述UDPTCP首部格式 连接管理连接建立连接释放 概述 从IP层看&#xff0c;通信双方是两个主机。 但真正进行通信的实体是在主机中的进程&#xff0c;是这个主机中的一个进程和另一个主机中的一个进程在交换数据。 所以严格的讲&#xff0c;两个主机进行通信就是两个…

关于邮件协议的理解、实验以及java mail的实现

目录 1、几种电子邮件系统组成 传统电子邮件系统 用户代理 UA (User Agent) 邮箱服务器 基于万维网的电子邮件系统 2、电子邮件协议 SMTP 连接建立 邮件传送 连接释放 局限 POP3 IMAP 补充 3、telnet实验电子邮件协议 SMTP POP3 4、java mail 参考文章 1、几…

el-carousel和el-image组合实现swiper左右滑动图片,点击某张图片放大预览的效果

<template><el-carousel class"image-swiper" :height"100%" :indicator-position"swiperItems.length < 1 ? none : ":arrow"swiperItems.length < 1 ? never : "><el-carousel-item v-for"(a, $i) in s…

websocket前端的连接与接收数据

什么是websocket 1, WebSocket是一种用于在客户端和服务器之间进行全双工通信的网络协议。它使得在单个TCP连接上可以进行双向通信&#xff0c;允许服务器主动地发送数据给客户端&#xff0c;同时客户端也可以向服务器发送数据。与传统的HTTP请求-响应模型不同&#xff0c;Web…

Scrapy框架--settings配置 (详解)

目录 settings配置 官网-参考配置 配置文档 Scrapy默认BASE设置 settings配置 Scrapy框架中的配置文件&#xff08;settings.py&#xff09;是用来管理爬虫行为和功能的关键部分。它是一个Python模块&#xff0c;提供了各种配置选项&#xff0c;可以自定义和控制爬虫的行为。…

【IMX6ULL驱动开发学习】12.Linux驱动之设备树

承接上一篇博客 【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想&#xff08;学习设备树过渡部分&#xff09; 代码获取&#xff1a;https://gitee.com/chenshao777/imx6-ull_-drivers 我后面将三个层合并了&#xff08;实际上只有前两层&#xff09;&#xff0c;合并…

[论文阅读] (31)李沐老师视频学习——4.研究的艺术·理由、论据和担保

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

Element-Plus select选择器-下拉组件错位bug(有高度滚动时)

1. bug重现 由于项目不便展示&#xff0c;因此在官网复现bug https://element-plus.org/zh-CN/component/select.html#基础用法 2. 调试 源码调试时发现下拉菜单是直接放在body 元素里&#xff0c;这时候希望它不要直接放在body里&#xff0c; 查阅文档看到这两个属性&#x…

软件工程期末报告(登录注册部分)

云小智微校园工具系统的设计与实现成员1注册模块 目录 云小智微校园工具系统的设计与实现成员1注册模块 第一章 绪论 第二章需求分析&#xff1a; 1.活动图&#xff1a; 2.用例图&#xff1a; 什么用户参与了业务模块&#xff1a; 这类用户在模块中使用什么功能学生用户…

【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(数据更新场景策略和方案分析)

一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战&#xff08;数据更新场景策略和方案分析&#xff09; 数据更新场景Cache Aside Pattern策略思想具体操作分析失效&#xff08;Invalidation&#xff09;命中&#xff08;Cache Hit&#xff09;更新&…