面试的算法:寻找缺失的整数

【Java编程】【面试题】【算法】缺失的第一个正数:给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 /如果最终都没找到 那么证明完全匹配(1,2,3...)那么缺失的最小整数位数组的长度+1;////时间复杂度 o(n*m)//按照正整数 :1,2,3。if(nums[j]==i){ //如果找到i 标记为true 跳出循环。{ // 位置i的值应该是i+1 如果不是,就置换。flag){ //如果未找到,那么当前i就是不存在的最小正整数。// 再次遍历数组,找到第一个不满足 nums[i] == i+1 的位置 i。 阅读详情

寻找缺失的整数

  • 问题:在一个无序的数组中有99个不重复的正整数,范围是1~100,唯独缺少一个整数,如何找出那个缺少的整数?
  • 方法1:从小到大排序,之后连续比较那个数与之后的数不连续了,那么缺的数就是比较的那个数+1
  • 方法2:整体-部分【1加到100减去那99个数,剩下的就是所求的数】
  •  
  • 拓展1:一个无序数组中有若干个数,范围是1~100,其中99个数都出现了偶数次,只有一个整数出现了奇数次,如何找到这个出现奇数次的整数?
  • 方法1:用异或运算【进行位运算时,相同位为0,不同为1】,数组中的所有数,依次进行异或运算,得到的结果就是出现奇数次的那个数,得到结果的时间复杂度为O(n),空间复杂度为O(1)
  • 举例:
  • public class text{
    
        public static void main(String[] args) {
    
            int[] arr={2,2,3,3,1,1,4,4,5};
            int sum=0;
            for(int i=0;i<arr.length;i++){
                sum^=arr[i];
            }
            System.out.println(sum);
        }
        //输出为:5
    }
  •  
  • 拓展2:假设还是刚才的问题,只是奇数次的数有2个
  • 方法1:如果按照上边的方法得到结果,只是得到了两个整数的异或运算的结果,假设这两个数一个是A一个是B,并且异或运算得到的结果有一个二进制为是1【如果都是0,那么说明这两个数相等】,选定该结果中值为1的某一位数字,如 00000110B 的倒数第二位是1,说明A和B对应的二进制的倒数第二位是不同的。其中必定有一个整数的倒数第二位是0,另一个整数的倒数第二位是1,根据这个可以将整个数组分为两部分,分别对这两部分进行拓展1的操作,分别得到两个数,就是我们想要的结果
  • 举例:
  • public class text{
    
        public static void main(String[] args) {
    
            int[] arr={4,1,2,2,5,1,4,3};
            //用于存储2个出现奇数次的整数
            int result[]=new int[2];
            //第一次进行整体异或运算
            int YHResult=0;
            for (int i=0;i<arr.length;i++){
                YHResult^=arr[i];
            }
            //如果进行异或运算的结果为0,则说明输入的数组不符合题目要求
            if (YHResult==0){
                System.out.println("输入的数组不符合要求");
            }
            //确定2个整数的不同位,以此来做分组
            //程序走到这里的 YHResult:表示所求的两个数的异或运算的结果
            //&与运算:1 & 1=1,1 & 0=0,0 & 0=0
            int separator=1;
            //只有当separator的某一位为1时才不进入循环,separator从个位开始,十位依次类推
            while (0==(YHResult & separator)){
                //左移一位
                separator<<=1;
            }
            //第二次分组进行异或运算
            for (int i=0;i<arr.length;i++){
                //这里的if保证了上一步确定的位,要么是1,要么是0
                if (0==(arr[i] & separator)){
                    //当确定的位为为0时
                    result[0]^=arr[i];
                }else {
                    //当确定的为为1时
                    result[1]^=arr[i];
                }
            }
            //输出这两个数
            System.out.println(result[0]+" "+result[1]);
        }
    }
Leetcode 41题:寻找第一个缺失的正整数 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma... 阅读详情

相关推荐

华为OD 技术综合面,手撕代码真题整理(107):骑士巡逻 | 寻找缺失的正整数

特别提醒,订阅专栏前一定要看好题解语言哦~

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 231

C语言:寻找缺失的自然数

问题:现有一个数组,寻找其在一定范围内缺失的自然数。举例:寻找num数组在一定范围内缺失的自然数。

weixin_52087617的博客 1427

从零搭建智能车竞赛卡丁车:自动驾驶科目中的锥桶识别与路径规划实战教程

本文提供了一份从零搭建智能车竞赛卡丁车的实战教程,重点解析了自动驾驶科目中的核心环节:锥桶识别与路径规划。内容涵盖硬件选型、传感器部署、基于单目视觉的识别算法,以及适用于嵌入式平台的轻量级路径规划与跟踪策略,旨在帮助参赛者与爱好者系统掌握关键技术,完成稳定可靠的自动驾驶系统搭建。

lg888的博客 1166

小算法-----查找缺失的数

题目描述 :在一个数组中,存放着0,1,2,.....这些数,其中有一个数丢了,查找丢失的元素   比如:数组为:0,1,2,4,5,6,则丢失的元素是3. 我们可以利用hash法,创建一个数组(长度是原数组长度加1),将存在的元素在新数 组中对应的位置进行标记。最后找到没有标记的就好。 下边来看一般的解法: #define _CRT_SECURE_NO_WARNINGS 1 #inc

天涯海角 2709

ESP32-CAM与Thonny的完美搭配:从烧录到通信的完整流程

本文详细介绍了如何将ESP32-CAM与Thonny IDE完美结合,从固件烧录到通信测试的完整流程。通过硬件连接、MicroPython固件烧录、Thonny环境配置以及摄像头功能开发等步骤,帮助开发者快速搭建高效的物联网开发环境,实现图像采集与无线通信功能。

tomato的博客 1121

基于TDOA的chan算法(定位算法)

Chan算法原理 TDOA(TDOA,the time differences of arrival,到达时间差),Chan算法是TDOA定位方法的一个很好用的方法。 Chan算法是非递归双曲线方程组解法,具有解析表达式解,主要特点是:在测量误差服从理想高斯分布时,它的定位精度高、计算量小,并且可以通过增加已确定点的数量来提高算法精度。 该算法的推导前提是基于测量误差为零均值高斯随机变量,对于实际环境中误差较大的测量值,比如在有非视距误差的环境下,该算法的性能会有显著下降。二维情况下,可分为只有三个点参与定

优快云不再更新 2万+

思维训练(二)如何找到缺失的数

题目 在一个无序数组中有99个不重复的正整数,范围为1到100,唯独缺少1个1到100中的整数,如何找到缺失的整数 思路: sum(100)-sum(99) 拓展一: 一个无序数组里有若干正整数,范围1到100, 其中99个整数出现了偶数次,只有一个正整数出现了奇数次,如何找到这个奇数次的整数? 思路:每次出现数字,或二进制问题的时候,脑子里要有一个弦,异或xor 异或的特点是:不同为1,相同为0,所以一个数异或自身为0. a xor b xor b = a 异或在java语言中也常用来 不借助第三方

xiaoxiaodechongzi的博客 828

一、两电平IGBT整流器

电压源换流器(Voltage source converter,VSC)连接交流主网和直流电网,起到交直流网络连接、功率输送和电能变换的作用。采用电压控制手段可维持直流电压的稳定;或采用功率控制手段保证系统功率输出达到预期。VSC的三相电压平衡方程如式(1)所示:式中,igx和ugx分别表示主网三相电流与电压(x=a,b,c);ucx表示换流器VSC 交流输出电压;Rg表示交流主网等效电阻;Lg表示交流主网等效电感。

TUCHACHINA的博客 4156

在排序数组中查找数字 & 0~n-1中缺失的数字

统计一个数字在排序数组中出现的次数。

L的博客 795

云模型在综合评价过程中的应用

目录 1 云模型标尺(标准云模型)的构建方法 1.1 通过正态云的“3En 规则”来表示评价论域 1.2 通过论域的边界值隶属度相等来表示评价论域 1.3 通过黄金分割法来表示评价论域 2 确定评价结果的过程 2.1 基本云发生器 2.2 X条件云发生器 2.3 两种方法的区别 综合评价问题一般分为以下六个步骤 1、明确评价目的; 2、确定被评价对象; 3、建立评价指标体系(包括收集评价指标的原始值、评价指标的若干预处理等); 4、确立与各项评价指标相对应的权重系数; 5、选..

weixin_62223576的博客 1万+

Flink CDC 中 StartupOptions 模式详解

Flink CDC 的 StartupOptions 模式用于指定作业启动时从源数据读取数据的起始位置,不同的模式适用于不同的业务场景,可满足多样化的数据处理需求,主要有 Initial 模式、Earliest 模式、Latest 模式、SpecificOffset 模式和 Timestamp 模式。

RodJohnsonDoctor的专栏 849

数据结构---寻找缺失的整数

寻找缺失整数

记录我目之所及的世界 719

STM32 TIM3硬件XOR+复位模式实现霍尔信号精准捕获

霍尔传感器是电机控制系统中获取转子位置的关键器件,其三路数字信号需通过高精度、低延迟的边沿检测机制转换为电角度信息。其核心原理在于利用定时器输入XOR逻辑合并多路信号,并结合从模式复位(Reset Mode)实现硬件级时间间隔测量——每次跳变强制计数器清零,使CNT值直接表征换相周期。该方案规避了软件轮询的不确定性,显著提升FOC控制的实时性与鲁棒性。典型应用场景包括BLDC/FOC电机驱动、机器人关节伺服及工业变频器设计,尤其适用于STM32F4系列等具备硬件XOR与从模式控制器的MCU平台。

weixin_28931507的博客 88

用100道题拿下你的算法面试(数组篇-13):寻找缺失的最小正整数

这篇文章介绍了四种不同的算法来寻找数组中缺失的最小正整数,并提供了六种编程语言的实现。主要内容包括: 朴素解法(排序法):通过排序数组后遍历查找缺失数字,时间复杂度O(nlogn),空间复杂度O(1) 优化解法(标记数组):使用额外空间标记出现过的数字,时间复杂度O(n),空间复杂度O(n) 最优解法(循环排序):通过原地交换将数字放到正确位置,时间复杂度O(n),空间复杂度O(1) 替代解法: 通过取反标记数字(时间复杂度O(n),空间复杂度O(1)) 通过索引标记数字(时间复杂度O(n),空间复杂度O(

Raink老师的博客 345

90. 将 SAP ABAP 内表内容本地导出成 Excel 文件

这里文件扩展名为 csv,全称是 Comma-Separated Values,意思是这种类型的文件内容,由逗号分隔。除了 ASC 之外,另一个可用的选项是 BIN,适用于 PDF,EXE 等二进制文件的导出。支持海量的输入和输出参数,我们这个简单的本地导出场景里,大部分参数都用不上。这个分隔符的添加逻辑,编写在上图红色高亮矩形框内,使用的语法是。本教程有学习者向我提问,询问如何将 ABAP 某某函数的某某输出参数的值,导出成本地 Excel 文件。把这个内表的内容,下载到本地,以本地文件的方式保存。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1742

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode 41:原地算法寻找缺失最小正数

在算法设计中,原地算法是一种不依赖额外存储空间的高效解决方案,特别适用于内存受限的场景。其核心原理是通过巧妙的元素交换或标记,直接在输入数据结构上完成计算。以寻找缺失最小正数为例,典型的原地哈希技术利用数组索引作为天然哈希表,通过三次线性遍历实现O(n)时间复杂度和O(1)空间复杂度。这种技术在数据库ID分配、分布式序列号生成等工程场景中有重要应用价值。Google、Facebook等顶级公司面试中常考察此类问题,既检验候选人对时间/空间复杂度的把控能力,也考察对基础数据结构(如数组索引)的创新运用。掌握原

weixin_34095889的博客 595

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

百度质量部二面(我觉得我挂了)

一个算法题:从1-10000中随机去掉两个数,用最小的时间复杂度找出这个数。   先用公式n(n+1)/2算出1-10000的总和 , 用公式n(n+1)(2n+1)/6算出1-10000的平方和,然后扫描那9998个数,每扫到一个就从平方和中减去这个数的平方,扫描一个就从总和中减去这个数。 知道两个数的和和平方和,解方程组即可得出这两个数   这题没想出来这个方法,只想了最龊的两...

ZeaLoVe 298

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

返回数据中最小未出现的正整数-缺失的第一个正数

挥洒过得很快结束

xiaomayi201314的专栏 176

笔试面试题目:求缺失的最小正整数

国庆假期已过半。今天,我们来看一个leetcode问题,也是当年B公司的面试题,有难度。问题如下: 给定一个整数数组,找出其中缺失的最小的正整数,要求时间复杂度为O(n), 空间复杂度为O(1). 输入输出示例如下: 输入数组a 输出 [1, 2, 0] 3 [3, 4, 1, -1] 2 [6, 7, 8, 12] 1 我们先来分析一下: A. 假设a中的n个元素占...

认知 行动 坚持 3392

算法题:缺失的第一个正整数

这道题虽然表面看起来很简单,但要真正高效地解决它,需要一定的技巧。通过巧妙的交换和位置映射,我们避免了额外的空间消耗,同时保持了O(n)的时间复杂度。

peng_2333的博客 1420

求缺失的最小正整数

转自:https://blog.youkuaiyun.com/stpeace/article/details/109544261 今天,我们来看一个leetcode问题,也是当年B公司的面试题,有难度。问题如下: 给定一个整数数组,找出其中缺失的最小的正整数,要求时间复杂度为O(n), 空间复杂度为O(1). 输入输出示例如下: 输入数组a 输出 [1, 2, 0] 3 [3, 4, 1, -1] 2 [6, 7, 8, 12] ...

Ring__Rain的博客 2620

校招算法笔面试 | 缺失的第一个正整数

牛客题库题解

wc529065的博客 965

如何在1到100的整数数组中找到缺失的数字

有关编程面试的最常见问题之一就是:编写一个程序,用Java或任何其他语言查找数组中缺少的数字; 这种不仅在小型初创企业中被问到,而且还在谷歌,亚马逊,脸谱,微软等一些最大的技术公司中提出,主要是当他们访问知名大学的校园招聘毕业生时。 这个问题的最简单版本是:在100个整数的区域中找到缺失的元素,其中包含1到100之间的数字。这可以通过使用n(n + 1)/ 2计算序列的总和来轻松解决。这也是最快...

淡定_蜗牛的博客 1万+

寻找数组中缺失数字:多种算法详解与比较

异或法是最优选择,兼具高效性和安全性,特别适合面试场景数学求和法在数据量不大时是不错的备选方案,思路简单明了排序法虽然直观,但由于时间复杂度高,在实际应用中应避免使用哈希表法在需要保持原数组不变时可以考虑在面试中,建议先提出数学求和法展示基础思路,然后指出可能的溢出问题,最后给出异或法作为优化方案,这样能全面展示问题分析能力和算法知识。选择算法时,应根据具体场景权衡时间效率、空间开销和代码可读性,异或法在大多数情况下都是最佳选择。

qq_67169366的博客 657

面试中的算法(查找缺失的整数)

面试中的算法(缺失的一个整数)

分享我的点点滴滴,在成长路上与你同行! 631

原地哈希算法:高效寻找缺失最小正整数

哈希表是计算机科学中重要的数据结构,通过键值映射实现快速查找。在资源受限场景下,原地哈希技术通过复用输入数组空间,实现了O(1)空间复杂度的哈希功能。这种技术特别适用于需要严格内存管理的场景,如嵌入式系统或大规模数据处理。其核心原理是通过元素交换将数值x放置到数组的x-1索引位置,从而在不使用额外空间的情况下标记元素存在性。在算法题解和工程实践中,原地哈希被广泛应用于解决连续序列检测、缺失值查找等问题。本文以寻找缺失最小正整数为例,展示了如何通过元素交换和索引映射,在O(n)时间内完成数据处理,这种优化思路

weixin_30599769的博客 395
上一篇: Java实现:删除k个数字后的最小值
下一篇: Java实现:挖金矿问题
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值