消失的数字(c语言多种解法)

题目

该题目取自力扣(LeetCode)面试题 17.04. 消失的数字

该题目主要考察时间复杂度的把握,题目如下:

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

示例 1:

输入:[3,0,1]

输出:2

示例 2:

输入:[9,6,4,2,3,5,7,0,1]

输出:8

最后所以的源码放在最后

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

也是最简单的一种思路,就是把一到N个数全部相加再减去一到N用数组表示的数,我也觉得这个方法是最优解,因为他的思想也不难。用1+2+3....+n去减去arr[0]+arr[1]...+arr[n-1]。

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

这个方法我认为也是最难理解的一种方法,首先先创造一个动态数组,然后把动态数租对比元数组要多一个数,再把-1全部放入这个动态数组中,然后对比之前的那个数组把那个数组的数放置在动态数组中下标所对应的数中去,然后最后那个下标为-1的值,那就是要找的那个数字。就好比如果有五个萝卜,我挖六个坑全部填进去之后看哪个坑上没有萝卜,那就是我要找的那个坑。

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

给一个值X等于0,X先跟0到N的所有值异或,x在和数组中的每一个值异或,最后的X就是缺的那个数。两数异或值为0

源码

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

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

 

//int missingNumber(int* nums, int numsSize)
//{
//    int* temp = (int*)malloc(sizeof(int) * (numsSize + 1));
//    if (temp == NULL) 
//    {
//        printf("%s\n,strerror(errno)");
//        return 0;
//    }
//    int i = 0;
//    for (i = 0; i < numsSize + 1; i++)
//    {
//        *(temp + i) = -1;
//    }
//    for (i = 0; i < numsSize; i++)
//    {
//        temp[*nums] = *nums;
//        nums++;
//    }
//    for (i = 0; i < numsSize + 1; i++)
//        if (*(temp + i) == -1)
//        {
//            free(temp);
//            temp == NULL;
//            return i;
//        }
//    }
//    return 0;
//}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Execution failed for task ‘:app:compileFlutterBuildDebug‘. 解决

前言 项目场景&#xff1a;在Flutter项目中 或 在嵌入Flutter模块的Android原生项目&#xff1b; 启动场景&#xff1a;在Android原生端 编译 或 运行 项目时&#xff0c;可能出现这个异常&#xff1b; 异常 Build窗口并没有追踪到&#xff0c;引发异常代码位置&#xff0c;…

MySQL的SQL MODE

目录 举例&#xff1a; --常见SQL mode --mysql8 sql_mode 官方文档 https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html --查看全局的SQL MODE select global.sql_mode; --查看当前会话的SQL MODE select session.sql_mode; --运行时修改全局的SQL mode set gl…

python 基础知识点(蓝桥杯python科目个人复习计划27)

今日复习内容&#xff1a;基础算法中的递归 1.介绍 递归&#xff1a;通过自我调用来解决问题的函数递归通常把一个复杂的大问题层层转化为一个与原问题相似的规模较小的问题来解决 递归要注意&#xff1a;&#xff08;1&#xff09;递归出口&#xff1b;&#xff08;2&#x…

Django知识随笔

目录 1.如何再ajax中传输post数据&#xff1f; 1.如何再ajax中传输post数据&#xff1f; 在ajax传递的那个网址&#xff0c;会调用你路由的视图函数&#xff0c;在视图函数上面加一句 csrf_exempt 。写上之后会有提示让你导入类。

[嵌入式系统-4]:龙芯1B 开发学习套件-1-开发版硬件介绍

目录 前言&#xff1a; 一、龙芯 1B 开发学习套件简介 1.1 概述 二、龙芯1B 200开发板硬件组成与接口介绍 2.1 概述 2.2 核心板 2.2.1 CPU 2.2.2 什么是核心板 2.2.3 龙芯1B 200核心板 2.2.4 龙芯1B核心板的接口定义 2.3 开发板 2.3.1 龙芯1B0200开发板 2.3.2 龙芯…

微信小程序Skyline在手机端不渲染的问题之一及其解决方式

问题&#xff1a;电脑端是skyline渲染&#xff0c;手机端是webview渲染?如何解? 开发者工具 当前渲染模式&#xff1a;Skyline 当进行预览时手机端却是: 请注意看轮播图的显示情况 请注意看轮播图的显示情况 请注意看轮播图的显示情况 从轮播图上来看,手机端是webview渲染…

YOLOv8实例分割实战:TensorRT加速部署

课程链接&#xff1a;https://edu.csdn.net/course/detail/39273 PyTorch版的YOLOv8支持高性能实时实例分割方法。 TensorRT是针对英伟达GPU的加速工具。 本课程讲述如何使用TensorRT对YOLOv8实例分割进行加速和部署&#xff0c;实测推理速度提高3倍以上。  采用改进后的t…

【MCAL】TC397+EB-tresos之GPT配置实战 - 定时器

本篇文章介绍了在TC397平台使用EB-tresos对GPT驱动模块进行配置的实战过程,不仅介绍了使用GTM来实现定时器的方案&#xff0c;还介绍了基于GPT12来实现连续定时器的实例。因为GTM是德国博世公司开发的IP&#xff0c;而英飞凌的芯片集成了这个IP&#xff0c;并在这个基础上搭建了…

SpringMVC(十)拦截器

一、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现Handlerinterceptor SpringMVC中的拦截器必须在SpringMVC中的配置文件中进行配置 服务器的三大组件:servlet、filter(过滤器:在浏览器和目标资源之间进行过滤,我们从浏览器发送的…

Nodejs前端学习Day5

苦其心志&#xff0c;劳其筋骨 文章目录 前言一、处理路径问题二、path路径模块总结 前言 继续fs 一、处理路径问题 在使用fs模块操作文件时&#xff0c;如果提供的操作路径是以./或…/开头的相对路径时&#xff0c;很容易出现路径动态拼接错误的问题 原因&#xff1a;代码在…

深度强化学习(王树森)笔记07

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

内网安全:Exchange服务

目录 Exchange服务 实验环境 域横向移动-内网服务-Exchange探针 一. 端口扫描 二. SPN扫描 三. 脚本探针(还可以探针是否有安全漏洞) 域横向移动-内网服务-Exchange爆破 一 .BurpSuite Intruder模块爆破 域横向移动-内网服务-Exchange漏洞 CVE-2020-17144 Exchange R…

嵌入式Linux系统下的智能家居能源管理系统的设计与实现

大家好&#xff0c;今天给大家介绍嵌入式Linux系统下的智能家居能源管理系统的设计与实现&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 随着物联网技术的不断发展&#xff0c;…

19. 删除链表的倒数第 N 个结点(力扣LeetCode)

文章目录 19. 删除链表的倒数第 N 个结点题目描述将删除倒数第n个节点转化为删除第n个节点双指针 19. 删除链表的倒数第 N 个结点 题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;hea…

(28)Linux 信号保存 信号处理 不可重入函数

首先介绍几个新的概念&#xff1a; 信号递达(Delivery)&#xff1a;实际执行信号的处理动作。信号未决(Pending)&#xff1a;信号从产生到递达之间的状态。信号阻塞(Block)&#xff1a;被阻塞的信号产生时将保持在未决状态&#xff0c;直达解除对该信号的阻塞&#xff0c;才执…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之CheckboxGroup组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之CheckboxGroup组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、CheckboxGroup组件 提供多选框组件&#xff0c;通常用于某选项的打开或关…

【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word等office文件

1、Office Web(微软的开发接口) 优点 没有 Office也可以直接查看Office 文件适用于移动端、PC无需下载文件就可以在浏览器中查看 <iframe src"文档地址" frameborder"0" /> const docUrl 外网可预览的地址 const url encodeURIComponent(docUrl…

python零散学习

__name__和__main__关系 python函数入口 每个模块都有一个 __name__ 属性&#xff0c;当其值是 __main__ 时&#xff0c;表明该模块自身在运行&#xff08;此时__name____main__&#xff09;&#xff0c;否则是被引入&#xff08;此时__name__自身的模块名称&#xff09;。 变…

深度强化学习(王树森)笔记06

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

SpringBoot整合Quartz任务,java对任务创建、删除、修改、查询

SpringBoot整合Quartz定时任务 1、定时任务相关概念2、SpringBoot集成Quartz2.1、Quartz相关表2.2、pom.xml2.3、application.yml2.4、java对任务增删改查2.4.1、common相关配置类2.4.2、pojo类2.4.3、task类2.4.4、Controller类 3、一些理解3.1、Quartz的集群原理以及配置&…
最新文章