从1-100这个数组中查找被删除的数字

这是一个逻辑题,原数组是1到100的升序数组,删除一个数字后其他数字依次前移。思路1是通过元素与下标之间的差值找出删除数字;思路2是通过数组元素之和与理想总和的差值;思路3是利用二分查找的变形来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

有一个存有1-100的升序的数组。也就是存有1,2,3,4……100这100个数字的数组。如果从中删除一个数字,那么该数字后面的所有数字依次前移。现在已经删除了一个数字,问如何找出删除的是哪个数字。


介绍:

这是本人视屏面试的一道逻辑题,当时可能由于紧张也可能是因为视屏面试听不太清楚,题目的理解出现了错误,我当时的理解是存储比如1,3,5,6这样的不连续的数字。所以花了比较长的时间想了一些其他的办法,但是不允许其他的辅助,所以行不通。所以之后问清楚是1,2,3这样的,那么就简单多了。


思路1:

由于数组存储的是1,2,3,4这样的有规律的数组,所以这些数组中的元素和下标之间有着紧密的联系。所以没有移位的元素与下标之间相差1,移位了的差2.所以从头向后一次查找,找到第一个元素和下标相差2的位置,该下标加1就是被删除的数。


思路2:

因为只要有一个数被移动了,那么该位置上的数就会比之前的数字大1,所以把所有的元素的值相加,然后用5050减去该和就知道哪个数字被删除了。但是该方法不适合在编程方面使用。因为首先该方法从算法的角度虽然好理解,但是算法不优,而且得考虑最后一个数字的处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值