在按顺序递增的数组中查找缺少的某一个数字

js算法---寻找连续数组中的缺失数 寻找连续数组中的缺失数 给定一个数组,给出上边界和下边界数据,里面的数是连续的,但是缺失了一个,要求找出这个缺失的数 例如:arr=[2,1,3,5,4,8,9,6] 一共9个数,已知上边界为1,下边界为9,要找到缺失的7 思路: 首先遍历数组获取目前数组中个数想加的结果 然后根据高斯求和,求出理论上的和 最后相减即得到了缺失的数 const arr = [2,1,3,5,4,8,9,6]; const upperBound = 1; const lowerBound = 9; let prevSum = 阅读详情


题目是这样的:

给出一个数组arr内容是0-99的数字,从中间随机取出一个数字x,剩下的数字在数组arr中递增排序,求:使用最优的方法从数组arr中找到随机取出的x是多少


下面写的是js语法形式


方法一:

这是最笨也是最普通的方法,时间复杂度为O(n),for循环整个数组,前后两两想减,如果为1说明不是要找的,如果是2说明是中间缺少一个数字的,然后当前i下标的数字+1就是去除来的数字x

var arr = [0,1,2,3,4,5,6,8,9]

var x=  searchNum1( arr );

console.log(x);

function searchNum1( arr ){

    if( arr.length <=0 )  return false;

    for ( var i= 0,len=arr.length;i<len;i++ ){

            if( arr[i+1] - arr[i] == 2 ){

                    return arr[i]+1;

            }
    }

}

结果是: 7


方法二:

优化的写法,利用首尾相加值相同的原理,减少for循环的循环次数,时间复杂度为O(n/2) , 当首尾相加的和不等于9时,说明这两个数字的附近有一个就是要找的数字x,然后分别往前和往后计算差值是否为1就可以确认x是多少了,另外这个方法要处理下中间的数字,由于长度是奇数,所以中间的数字是个独立的数字不会跟任何其他数字相加,所以单独处理下

var arr = [0,1,2,3,4,5,6,8,9]

var x=  searchNum( arr );

console.log(x);

function searchNum( arr ){

    if( arr.length <=0 )  return false;

    var middleI = Math.floor(arr.length/2);

    for ( var i= 0,len=arr.length;i<middleI;i++ ){

        if ( arr[middleI]-arr[middleI-1] > 1 ) {

            return arr[middleI]-1;

        } else if(  arr[middleI+1]-arr[middleI] > 1 ){

            return arr[middleI]+1;

        } else {
            if( arr[i] + arr[len-i-1] !== 9 ){

                if( arr[i]-arr[i-1] !== 1 ){

                    return arr[i]-1;

                } else if( arr[len-i] + arr[len-i-1] !== 1 ){

                    return arr[len-i-1]+1;
                }
                break;
            }
        }
    }

}


网友如果有更优的方法,欢迎吐槽评论共赏


java二维数组查找 问题:在一个二维数组中,每行每列都递增排序,在这个数组中查找一个数字,如果存在返回true,否则返回flase。 分析:数组查找一直都是初学java的同学的热门考点,关于查找主要有顺序查找、二分查找、哈希表查找、二叉排序树查找。 我们看下下面这个数组,数组满足每行每列都是递增顺序。在这个数组中查找某个数,如果存在,返回true和所在位置。否则返回flase。 这里我们该选择什么样的方式来... 阅读详情

相关推荐

已知一个数组,每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序。请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数

用Java语言实现如下: 已知一个数组,每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序。请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数

Lindsay_liu的博客 1500

剑指offer53 II:0~n-1(递增数组)中找到缺失的数字(二分法)

本人用的是充分考虑情况之后,将一个数字本身应有的数字构成新列表,然后将两个列表进行比较。代码如下: classSolution: defmissingNumber(self,nums:List[int])->int: l=[] iflen(nums)==1: ifnums[len(nums)-1]==1: return0 elifnums[len(nums...

华辰烟雨的博客 338

递增顺序表插入

【问题描述】 设有递增有序顺序表,实现其插入元素后依然有序。 【输入形式】 第一行输入一个N(N不大于100); 第二行输入N个整数(假设输入序列按照递增顺序,以空格分隔); 第三行输入一个整数M(欲插入数据); 【输出形式】 输出插入M后的顺序表。 【样例输入】 5 12 25 35 98 125 77 【样例输出】 12 25 35 77 98 125

AIGC 2929

在数组中查找丢失的一个数据

最简单的算法:开辟一个数组,然后遍历原数组,读到哪个数就给新开辟的那个数组对应位置写成true,遍历完之后再对对新开的数组遍历一遍找到为false的那个位置,它对应的下标就是丢失的数据 时间复杂度:O(n)空间复杂度O(n+1) int missing(int *arr, int len) { if(NULL == arr) return -1; int*brr = (int *)mal...

Y~哈哈哈的博客 962

基于Multisim的智能交通灯控制系统仿真与实现(含动态闪烁功能)

本文详细介绍了基于Multisim的智能交通灯控制系统仿真与实现,重点解析了动态闪烁功能的电路设计。通过555定时器、74LS192计数器和JK触发器等核心模块,实现了主干道与支干道的交替通行及黄灯1Hz闪烁功能,为交通灯控制系统设计提供了完整的仿真方案。

weixin_29174013的博客 426

RT_Thread Studio使用——USB虚拟串口(VCP)

RT_Thread Studio使用——USB虚拟串口(VCP)

weixin_44735205的博客 3374

在有序递增数组中查找一个缺少的数字

例如2,3,4,5,6,8,9.在这个数组中我们要找到缺少的7。从直觉上看,我们可以把2到9求和,然后把数组的成员求和。用数字的和减去数组的和得到的就是缺少的数字。但是这个办法的时间复杂度是O(n)。但是我们看到数组是有序的,能不能通过二分法找到数字呢,答案是肯定的。我们可以发现规律,如果数字缺少在数组的前半部分,那么数组的中间节点会大于数字的中间节点。例如1,3,4由于缺少2,所以数组的中间节点

Splendour的专栏 5055

从零完成 STM32 + ESP-01S + 云服务器 TCP 通信测试

STM32 通过 USART3 控制 ESP-01S 接入手机 2.4 GHz 热点,随后连接公网云服务器 8.152.204.86:9002。云端在同一 TCP 连接中连续收到 seq=1~6 的测试报文,5 个发送间隔平均约 5.4 秒,说明本次 TCP 上行链路已经打通。

weixin_51387720的博客 312

在递增数组中找一个数字

让人瑟瑟发抖的面试题。。。 来我们看一下题目在一个二维数组中,每一行都按照从左到右递增的顺序操作。每一列都按照从上到下递增的顺序排序。完成代码,输入这样一个二维数组和一个整数,判断数组是否含有该整数 怎么解决勒???分析:如果二维数组是这样,为了解决问题完全可以把数组遍历一遍,但是为了效率,我们需要把时间复杂度降低,为了遍历最少的数字,我们需要把行和列分开。所以,我们会从数组中找一个数字进行判断,...

359

《AI Coding手册:Claude Code、OpenAI Codex、OpenClaw深度解析与实战指南》

AI编码技术经历了从简单规则匹配到深度神经网络,再到当前智能体(Agent)架构的范式转变。第一阶段:静态代码补全(2010-2018)早期工具如IntelliSense、Emmet基于语法分析和固定模板提供代码提示。这类系统依赖预定义规则,缺乏语义理解能力,仅能处理局部代码片段。第二阶段:统计语言模型(2018-2020)以GPT-2、TabNine为代表,引入基于大规模代码训练的神经语言模型。

AI天才研究院 1033

Python 爬虫实战:攻克小红书种草笔记,抓取美妆好物推荐数据

通过本次 Python 爬虫实战,我们成功地从小红书爬取了美妆种草笔记的数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分笔记的数据,且未对笔记中的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多笔记的数据,并深入分析笔记中的多媒体内容、用户行为模式等,为美妆品牌和消费者提供更有价值的数据支持。

u014481728的博客 3272

在排序数组中查找符合条件的数

在排序数组中查找符合条件的数 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15 和数字15。...

210

10、贝叶斯曲线拟合与预测分布详解

本文详细介绍了贝叶斯曲线拟合与预测分布的核心概念与计算方法。从最大似然估计出发,引入参数的先验分布,推导出后验分布与最大后验估计,并进一步展示如何通过积分获得完整的预测分布。文章解析了预测分布中均值与方差的构成,强调贝叶斯方法在量化不确定性方面的优势,涵盖金融、医疗、气象等实际应用场景。最后总结了操作步骤与未来研究方向,帮助读者系统掌握贝叶斯方法在回归问题中的应用。

android的专栏 106

【剑指offer】在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。输入这样的一个二维数组和一个整数,判断数组中是否含该整数

题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 分析: 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,因此从左下角开始查找,当要查找数字比左下角数字大时。右移要查找数字比左下角数字小时,上移。 实现代码: public c...

JockLiu的博客 2565

UE5 蓝图节点图文大全(300+蓝图,9万字+)

本文采用虚幻5.2.1版本,以图文的方式对蓝图节点进行介绍,包括蓝图节点的输入输出参数解释,并有中英文节点名称可参考。

一碗清深的博客 2万+

Oracle EBS R12 AR 标准发票 核心表结构

​ Oracle EBS R12 AR 标准发票 核心表结构 聚焦手动标准发票 (Standard Invoice),按头→行→分配→税→收款计划→会计分录→历史分层,标注主键、外键、关键字段、业务含义,同时说明表间关联关系,适配开发 / 运维 / 数据核对场景。 一、主数据层(发票头 + 行,核心业务表) 1. RA_CUSTOMER_TRX_ALL 【发票头表】 作用:存储整张发票头部信息,一张发票对应一条记录,AR 发票主表。 主键:CUSTOMER_TRX_ID (唯一 ID,系统内部键) 业

金牌架构师 282

杨氏矩阵-有一个二维数组数组的每行从左到右是递增的, 每列从上到下是递增的, 在这样的数组中查找一个数字是否存在?

杨氏矩阵 有一个二维数组 数组的每行从左到右是递增的, 每列从上到下是递增的. 在这样的数组中查找一个数字是否存在? #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int Reseach(int a[][3], int row, int col, int num) { int i = 0; int j = col - 1;...

Dly6161的博客 327

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

剑指offer:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有

剑指offer算法题 查找 数组 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题目分析 方法一 通过这个数组的规律我们可以发现,数组每一列从下往上是递减的,每一行从左往右是递增的。因次我们可以从左下角的那个数开始比较,如果目标数大于左下角的数,则往右找;如果目标数小于左下角的数,则往上找。 下面是Java代码 public class Solutio

gaozhuang63的博客 905

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

剑指offer——在一个二维递增数组中查找一个数

剑指offer——在一个二维递增数组中查找一个数 题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 解题思路:因为二维数组,从左至右,从上至下递增。从上往下每一行遍历,当遍历到比target大的数字是,说明target只会出现在左下那块地方。然后缩小范...

Qinhaifu的博客 406

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

二维数组查找数字

题目 在一个二维数组里,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入一个二维数组和一个数字,判断数字是否在二维数组中。存在输出true,不存在输出false。 package com.banban.CeShi; /** * @author :zhangpengzhan * @date :Created in 2019/4/1 16:53 ...

板板的小博客 409

二维数组的查找(每一行每一列都是递增顺序)?

问题描述: 在一个二维数组中( 每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 要求时间复杂度(O(M+N),空间复杂度O(l) 解题思路:该二维数组中的一个数,它左边的数都比它小,下边的数都比它大。因此,从右上角开始查找,就可以根据num和当前元素的大小关系来缩小查找...

潇洒不放纵的博客 1889

剑指offer ==== 数组(二维数组查找、旋转数组的最小数组、调整数组顺序、超过一半的数字、重复的数字、只出现一次的数字)

1. 二维数组的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题目分析 //解决思路: //如数组样式如下: 1 2 3 4 2 3 4 5 3 4 5 6 正常查找的过程,本质就是排除的过程,如果双循环查找,本质是一次排除一个,效率过低 根据题面要求,我们可以采取从右上角(或左下角)进行比较),这样可以做到一次排除一 行或者一列。 OJ题目

lyly_h的博客 485

C语言—在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数, 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

题目://在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时间复杂度O(row+col) 思路://从右上角开始遍历,如果这个数字小于右上角的数,则列减1,如果大于右上角的数,则行加1。 #include<stdio.h> #include<windows.h> void find(int a[4][4], int val){ int i = 0; //行 int j

qq_44847147的博客 2334

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,完成一个函数,输入这样的一个二维数组和一个整数,判断该数组中是否含有该整数

既然要在一个二维数组中找数,那么就要将需要寻找的数字与二维数组中的数字进行比较,又因为该二维数组是有序排列的,所以我们为了在这个二维数组中寻找一个数,一定要知道在比较完大小之后,下来需要同哪个数作比较. 如果我们先同左上角的数比较,假如需要寻找的数比这个数大,那该往右边走还是往下边走,显然可选择的路变为了两条. 基于这个思路考虑,我们可以选择的出发点就只剩下了右上角和左下角. #define _C...

persistence_Y的博客 2754

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数

题目: 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 [ [1,2,8,9], [2,4,9,12], [4,7,10,13], [6,8,11,15] ] 给定 target = 7,返回 true。 给定 target = 3,返回 false。 0 <= array.length <= 500 0 <= array[0].len

bzqwell的博客 504

1 二维数组中的查找:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。。

一、题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 二、解题思路 首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束。 如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行。 也就是说如果要查找的数字不在数组的...

皮卡丘的博客 369
海海naida
博客等级 码龄13年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值