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

这篇具有很好参考价值的文章主要介绍了消失的数字(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]。

消失的数字(c语言多种解法),c语言,算法,开发语言,经验分享,笔记

消失的数字(c语言多种解法),c语言,算法,开发语言,经验分享,笔记

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

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

消失的数字(c语言多种解法),c语言,算法,开发语言,经验分享,笔记

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

给一个值X等于0,X先跟0到N的所有值异或,x在和数组中的每一个值异或,最后的X就是缺的那个数。两数异或值为0消失的数字(c语言多种解法),c语言,算法,开发语言,经验分享,笔记

源码

//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;
//}文章来源地址https://www.toymoban.com/news/detail-832963.html

到了这里,关于消失的数字(c语言多种解法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习经验分享NO.16】超全代码-python画Sigmoid,ReLU,Tanh等十多种激活函数曲线及其梯度曲线(持续更新)

    激活函数是一种特殊的非线性函数,它能够在神经网络中使用,其作用是将输入信号转化成输出信号。它将神经元中的输入信号转换为一个有意义的输出,从而使得神经网络能够学习和识别复杂的模式。常用的激活函数有 Sigmoid、ReLU、Leaky ReLU 和 ELU 等。大论文理论部分需要介

    2023年04月08日
    浏览(53)
  • 开源网安受邀参加2023全球数字经济大会,分享软件安全落地实践经验

    近日, 2023全球数字经济大会数字安全生态建设专题论坛在京隆重举行 。作为2023全球数字经济大会的重要组成部分,本次论坛围绕“数字安全生态建设”这一主题,邀请政府主管部门、行业专家学者、关键信息基础设施运营主体、数字安全企业、数据要素流通等相关方参与交

    2024年02月12日
    浏览(54)
  • 【经验分享】分类算法与聚类算法有什么区别?白话讲解

    经常有人会提到这个问题,从我个人的观点和经验来说2者最明显的特征是:分类是有具体分类的数量,而聚类是没有固定的分类数量。 你可以想象一下,分类算法就像是给你一堆水果,然后告诉你苹果、香蕉、橙子分别应该放在哪里。它已经知道每个水果属于哪个类别,所

    2024年02月21日
    浏览(34)
  • 实战经验分享:开发同城外卖跑腿小程序

    下文,小编将与大家一同探究同城外卖跑腿小程序的开发实战,包括但不限于技术选型、开发流程、用户体验等多个方面。 1.技术选型 在同城外卖跑腿小程序的开发中,技术选型是至关重要的一环。对于前端,选择了使用Vue.js框架,其灵活性和生态系统的支持使得开发过程更

    2024年02月03日
    浏览(47)
  • 【经验分享】自然语言处理技术有哪些局限性和挑战?

    个人认为,主要是两个难点: 1.语料,通常的语料很好解决,用爬虫从互联网上就可以采集和标注训练。但是我们接触很多项目和客户需求都是专业性很强的,例如:航天材料、电气设备、地理信息、化学试剂 等等。往往很多素材和语料都是很宝贵的,而且都是这些企业的内

    2024年02月21日
    浏览(45)
  • 使用Unity开发手机AR项目经验分享

           AR技术发展到现在也不新鲜了,开发AR的SDK也是五花八门,怎么选择是个问题。这篇文章提供了一套整体开发AR思路,还有后续兼容性问题的解决思路。         Unity开发手机AR项目主要是集成的ARCore和ARKit,ARCore面向Android手机而ARKit面向IOS,从Unity2019后Unity官方使用

    2024年02月11日
    浏览(50)
  • 面试经验分享 | 某康安全开发工程师

    DOM型xss和别的xss最大的区别就是它不经过服务器,仅仅是通过网页本身的JavaScript进行渲染触发的。 平常用的多的是MySQL数据库,像Oracle数据库也有了解,但是用的不多。 我的研究方向是自然语言处理,具体的领域是虚假信息检测。我的小论文中采用的数据集是twitter15和twit

    2024年04月15日
    浏览(56)
  • SuperPoint和SuperGlue 的算法介绍及学习应用经验分享

    特征点提取和匹配是多视图几何的基础理论知识,在SLAM相关领域有着重要作用。比如在视觉SLAM中,著名ORBSLAM就是基于特征点法的,一般通过特征点提取和匹配,再根据匹配关系进行几何求解就可以得到位姿。 一般流程为 1.输入一对图像 2.提取特征点 3.进行匹配 4.根据匹配关

    2024年01月19日
    浏览(41)
  • 数据可视化大屏——基于echarts的开发经验分享

    各位同事大家好!下面是我使用echarts中总结的一些个人经验,仅供参考。 echarts的能力、优劣等特点大家应该在技术选型阶段已经有所了解,这里主要分享使用、设计等经验。 echarts由无到有一共只需要四步: 引入echarts资源 :支持模块化项目使用npm下载引入,老项目使用s

    2024年02月01日
    浏览(59)
  • 【STM32】-串口开发经验分享-基于RTOS+空闲中断

    目录 1. 概述     2.串口介绍 2.1 原理框图 2.2 RS-232C 2.3 RS-422 2.4 RS-485 2.5 UART 3. STM32 USART介绍 4. CubeMx生成Uart初始化代码 4.1 NewProject选择单片机型号 4.2 设置rcc时钟  4.3 设置Usart 4.4 初始化代码 4.5 注意 5 工程源码解析 5.1 程序架构 5.2 源码 fml_ring_buffer.c fml_usart.c app_usart_task.c stm3

    2023年04月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包