Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >这些评论有点意思。

这些评论有点意思。

作者头像
五分钟学算法
发布于 2023-10-03 05:25:20
发布于 2023-10-03 05:25:20
21600
代码可运行
举报
文章被收录于专栏:五分钟学算法五分钟学算法
运行总次数:0
代码可运行

每天我都会有一些摸鱼时间,一般都喜欢逛脉脉、知乎、LeetCode 评论区。

今天又在 LeetCode 评论区看到一个很有意思的评论。

这个评论并没有给出什么骚话,不过很有道理,我们的解题代码得用上题目给出的每个条件才是一个好的解题代码。

首先给没有见过这道题目的小伙伴补充一下前置知识,这道题目讲的是:

一个长度为 n - 1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 ~ n - 1 之内。

在范围 0 ~ n - 1 内的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字。

比如数组为 [0,1,2,3,4,5,6,7,9],注意到 8 不在里面,因此输出 8 。

如果在面试的时候拿到这个题目,交出的代码是遍历的方式,那真的就和评论区的老哥留言的那样:

所有题都拿来遍历,offer也就遍历到别人那里去了。

面试官看到你提交的代码,会笑呵呵的让你回去等通知,好一点的会问你能不能再优化一下

很明显,遍历的方式没有用到题目给出的所有条件:

  • 所有数字都是唯一的
  • 每个数字都在范围 0 ~ n - 1 之内
  • 有且只有一个数字不在该数组中

这里给大家一个小技巧,但凡看到数组搜索相关的词语,第一想法可以去尝试二分法

如果每一个数字都出现正确的位置上,即它们和索引之间的对应关系都是一样的,比如数字 0 出现在索引位置为 0 的地方、数字 1 出现在索引位置为 1 的地方、数字 2 出现在索引位置为 2 的地方。。。

而如果发现有数字没有出现在正确的位置上,也就是发生了错位,比如数字 9 出现在索引位置为 8 的地方,那么由于有且只有一个数字不在该数组中,那么很明显数字 10 出现在索引位置为 9 的地方、数字 11 出现在索引位置为 10 的地方。。。

图片

我们只需要找到第一个发生了错位的地方就可以了

也就是说,原来的整个数组实际上是包含了两个部分。

  • 1、一个部分上面所有的数字都正确的位置上;
  • 2、另外一部分上面所有的数字都不在正确的位置上

那么就利用二分法的思路,不断的缩小查找区间,也就能找到第一个发生了错位的数字。

这里直接给出代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int missingNumber(int[] nums) {


        // left 指向当前区间的最左边位置,所以初始化为 0
        int left = 0 ;

        // right 指向当前区间的最右边位置,所以初始化为 nums.length - 1
        int right = nums.length - 1;

        // 循环进行二分查找,直到左端点位置超过了右端点
        while( left <= right ) {

            // 计算当前区间的中间位置,向下取整
            int mid = (left + right) / 2;
            
            // 如果中间位置的元素值等于当前索引的值
            // 那么说明从 left 到 mid 的这些元素都在正确的位置上
            // 即从 left 到 mid 的这些数字都在数组中,没有发生缺失
            // 所以需要在 mid + 1 到 right 这个区间去查找缺失的数字
            if(nums[mid] == mid){

                // 缩小范围为 mid + 1 到 right
                // 当前区间的左侧为 left = mid + 1,右侧 right 
                left = mid + 1;

            // 否则,说明从 left 到 mid 的这些元素,有元素不在正确的位置上
            // 即从 left 到 mid 的这些数字有数字发生缺失
            // 所以需要在 left 到 mid - 1 这个区间去查找缺失的数字
            }else{

                // 所以缩小范围为 left 到 mid - 1
                // 当前区间的左侧为 left,右侧 right = mid - 1
                right = mid - 1;

            }
        }

        // 由于只有一个数字缺失,所以找到的时候,left 指向的那个数字就是,使得后面所有数字与索引不一一对应时的第一个数字
        // 返回就行
        return left;
    }
}

以上就是今天分享的全部内容。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-02 20:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
95 后程序员一出校门就拿年薪 32 万?
原文出处:https://blog.csdn.net/csdnnews/article/details/83114697 ​
Java
2018/10/22
1.2K0
95 后程序员一出校门就拿年薪 32 万?
为什么大厂们一边在疯狂裁员,一边又在大量招人?
今天分享一篇来自于知乎的文章。 为什么分享这一篇,是因为它解决了我,包括我身边很多人的一个疑惑: 为什么大厂们一边在疯狂裁员,一边又在大量招人? 今年是特别魔幻的一年,一方面不断传出各个大厂大规模裁员的新闻,另一方面又可以看到某某大厂给应届生开出四五十万乃至更高的Offer消息。 很多问题,或许就像文中说的那样:都是在赌。 作者:东岳老师,https://www.zhihu.com/people/tian-tian-quan-75-47 真实在大厂工作过,十几年的互联网老兵告诉你事实。 大厂里面有很多的业务
程序猿DD
2022/04/07
6190
惨惨惨,低薪芯片公司已沦为免费人才培养基地
朋友和我抱怨,他们公司又走了好几个人。应届生,刚刚培养了一年,刚能承担一些任务了,结果别的公司涨点钱就挖走了。
白山头
2022/09/22
2340
真实经历,互联网大厂升职加薪那些事
我的第一份工作,在三星电子北京通信研究院。11年8月份,也就是研二暑假开始在这里实习,12年3月底硕士毕业,正式入职,月薪9980元。
纯洁的微笑
2018/09/30
1.3K0
真实经历,互联网大厂升职加薪那些事
Java 大神面试经验
1、 尽量不要讲假话(容易露馅),但是也不能全盘而出,面试也是一场谈判,大家都会藏着点的,善于保护自己的缺点(给面试官一个好印象,可以抬高薪资),get到对方的需求点,大家聊的越开心,一般来讲,成功率越高,薪资也越高,谈个好的价钱,充分了解到对方的优势和劣势。 就好比你问对方,你们公司的技术氛围怎么样,没有面试官会告诉你很垃圾的。 就好比公司996,但是你如果不主动问,面试官也不会直接主动告诉你,我们公司加班很变态。 面试是一场博弈,我们要尽量武装自己,做好准备,探明情况。 你掌握的信息越多,越有利于自己谈薪资,而且很多坑是可以避免的,你讨厌996的公司文化,那你就提前问清楚,不要盲目进坑之后不停的抱怨,然后刚进坑就想着换坑,问题是出在自己身上,而不是公司的文化上
lyb-geek
2019/05/16
9950
收割 Offer 之前需要知道的
本文作者labuladong,著有《labuladong的算法小抄》一书。 经常有读者问秋招春招相关的问题,所以就这篇文章聊聊校招的一些关键时间点和策略。 想想自己当时去实习,去校招,确实有很多疑问,网上怎么查也查不清楚。比如说什么是「秋招」?什么是「春招」?「提前批」又是什么鬼?我应该如何准备?注意事项有什么? 现在发现有的事情,别人知道,你不知道,错过了就真错过了。所以本文分享一下经验。 当然,这次分享的是互联网公司的招聘,对于一些传统行业,比如像银行这样的国企,它们的时间节点和互联网公司可能不太一样
博文视点Broadview
2023/05/19
3870
收割 Offer 之前需要知道的
大厂调整考勤,996将成为过去式吗?
鱼皮最新原创项目教程,欢迎学习 大家好,我是鱼皮。 最近开始逐渐有一些互联网公司调整考勤时间了,这是一个趋势,逐渐会有更多的公司跟上,996 将有可能逐步成为历史。 多年前互联网红火的时候,很多创业公司流行的是大小周,大周上六天班,下周上五天班,交替着来。 对于程序员,考勤通常是宽松的,大家也很自觉,每天十点半来公司,晚上九点多走,真正996的公司非常少,通常是一些制度不完善的小公司,互联网大厂里贯彻996的公司很少,除非是新业务开始时人手、进度很紧张的情况下,才会酌情执行一段时间。当然,某多多是个异类,暂
程序员鱼皮
2023/03/29
3800
大厂调整考勤,996将成为过去式吗?
在 BAT 做三年,普通程序员能拿多少工资?
说到薪资,BAT 作为国内互联网三巨头,员工薪资相信很多人都很好奇。有人提出,按起薪 15k 算,在 BAT 工作了三年的普通员工,按照每年 20% 的增幅可以达到 15*1.2*1.2*1.2=25k。年薪 25k*14(百度),25k*16(腾讯),25k*15(阿里)。那么这个算法准确吗?
哲洛不闹
2018/09/18
2.7K0
在 BAT 做三年,普通程序员能拿多少工资?
21届校招应届生Offer薪资曝光:年薪35万+,倒挂老员工:我还没有应届生重要
虽然这两年美团气势如虹,业绩和市值股价双起飞,仅次于腾讯和阿里。但薪资方面受热议,好像还是第一回。
开发者技术前线
2020/11/23
2.2K0
21届校招应届生Offer薪资曝光:年薪35万+,倒挂老员工:我还没有应届生重要
速成班出来的AI人才,老板到底要不要?6位导师告诉你行业真相
整理 | 明明 2018年1月16日,全球最大中文 IT 社区CSDN在北京蔓兰酒店举办了“ AI 生态赋能2018论坛暨 CSDN AI 新战略发布会”。在本次发布会上,CSDN重磅发布了AI技术职业升级指南——《AI 技术人才成长路线图V1.0》,该路线图提炼出入门AI的两大方式与进阶AI的10大路线。 发布会现场,由CSDN副总裁孟岩主持《圆桌论坛——AI人才培养之道》,中国软件行业协会副理事长陈钟、创新工场AI工程院副院长王咏刚、中科视拓CEO刘昕、百纳公司CEO刘铁峰、TinyMind总经理智
AI科技大本营
2018/04/27
6560
速成班出来的AI人才,老板到底要不要?6位导师告诉你行业真相
猎头频繁推荐的大厂机会真的靠谱吗?找工作什么样的机会最好?
最近老梁用了脉脉之后,就经常被各种猎头、HR骚扰,这帮人怎么做的呢,不管三七二十一上来就要交换联系方式或者是索要简历。
TechFlow-承志
2022/08/26
8230
猎头频繁推荐的大厂机会真的靠谱吗?找工作什么样的机会最好?
IT圈子里鬼混—谈谈IT行业的一些生存之道!
本文摘自:http://blog.csdn.net/mengtech/article/details/2279047
Java架构师历程
2019/03/08
6840
最难毕业季?这个行业缺人待遇好!
就业本不易,今年更加难。 上周,小N在辩论队群里和学弟学妹们聊春招,本来认为他们的状态是手拿几份offer,开始挑挑拣拣,但他们都愁眉苦脸,苦于三个问题: 1. 招人的公司太少。 2. 竞争的人太多。 3. 投了N份简历,但收到回音的,寥寥无几。 面对来势汹汹的疫情,打算春招出击的小伙伴都措手不及:本想三月份回到学校,化身职场精英,拿着简历去各个公司崭露头角,但没想到,这都三月下旬了,还只能在家蓬头垢面的上网课…… 就算有网申和线上宣讲会,但仍然掩盖不住今年春招的低迷。 虽说每年都被大家调侃是“最
腾讯NEXT学位
2020/03/25
6580
IC行业毕业生人均offer多,企业发出的offer数量远大于其需求
经常有IC小伙伴手里有多个offer,问我该怎么选。不由得慨叹,这届毕业生太幸福了。工资高,offer还多。offer多,选择余地大了,费一些脑细胞进行取舍,也算是幸福的烦恼吧。
白山头
2022/09/22
3730
IC行业毕业生人均offer多,企业发出的offer数量远大于其需求
互联网黑话,我忍你很久了!
鱼皮最新原创项目教程,欢迎学习 大家好,我是鱼皮。 我相信有很多人跟我一样,最开始听到什么OC、JD、RD、Package、HC、RD、QA之类的缩写和一些莫名其妙的黑话的时候都一脸懵逼,啥意思啊这是 。。。 后来随着自己秋招、毕业、参加工作后,也慢慢的明白了这些英文缩写、黑话都是啥意思了,今天我就来总结一下常见的互联网求职黑话都有哪些?社招校招都有,偷偷说一句,最后一个最有意思哈哈哈。 1、HC、BG、BU、JD、OD、OT(公司相关) HC,也就是Headcount,就是一家公司的招聘人头数。 BG
程序员鱼皮
2023/03/29
1.6K0
互联网黑话,我忍你很久了!
【程序员跳槽全攻略】短短2年真能轻松年薪40万?再不开窍就要后悔
首先,引用马云的一句话,员工离职的原因基本上可以归结为两点:钱,没给到位;心,受委屈了。这些归根结底就一条:干得不爽。
程序工场
2018/07/24
7270
揭秘大厂为什么总是一边疯狂裁员,一边大量招人?
编辑:Python数据科学 为什么分享这一篇,是因为它解决了我,包括我身边很多人的一个疑惑: 为什么大厂们一边在疯狂裁员,一边又在大量招人? 作者:东岳老师 https://www.zhihu.com/people/tian-tian-quan-75-47 真实在大厂工作过,十几年的互联网老兵告诉你事实。 大厂里面有很多的业务线,也有很多的部门,每个部门负责的都不一样,阿里不是只做淘宝,腾讯也不是只做微信,一个大厂有数百条业务线,有的赚钱,有的赔钱。但是通常赔钱的最多。 通常大厂是这样玩的: 上层领导看中
用户1564362
2022/04/11
6910
中国程序员为什么要跳槽?经常跳槽的程序员工资为何更高了?
之前,如果你每几年换一次工作,人们会觉得你的简历上有 “污点”。面试官会觉得你无法胜任一份工作,与同事相处不好,或者你对公司不忠诚,不能承担任务,等等。
一墨编程学习
2018/09/14
5150
中国程序员为什么要跳槽?经常跳槽的程序员工资为何更高了?
别再宣传IC行业高薪了
前天碰到邻居闲聊了两句。当得知我在芯片行业后,他表示,芯片工资很高啊。我说我的工资一般,他表示不相信。
白山头
2022/12/20
5920
offer选择,我要为了1000块放弃大厂的offer吗?
最近在知乎上看到一个很有意思的问题:毕业生,在薪资差别不大的情况下,比如500-1000,大公司好还是小公司好?
TechFlow-承志
2023/03/02
3670
offer选择,我要为了1000块放弃大厂的offer吗?
推荐阅读
相关推荐
95 后程序员一出校门就拿年薪 32 万?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验