程序员面试金典面试题17。01。不用加号的加法
题目难度:中等
原题链接〔1〕
今天继续更新程序员面试金典系列,大家在公众号算法精选里回复面试金典就能看到该系列当前连载的所有文章了,记得关注哦题目描述设计一个函数把两个数字相加。不得使用或者其他算术运算符。示例:输入:a1,b1输出:2提示:a,b均可能是负数或0结果不会溢出32位整数题目思考不能用四则运算,那还能用哪些运算符来实现呢?解决方案思路我们先来尝试分析数字的二进制表示,看看能否用位运算来替代加法如果某一位的两个数字都是1,那么这一位的加法就会产生进位,所以与可以用来计算进位,而且显然进位是要左移一位的接下来考虑如何得到当前位的加法结果。异或在两个数字都为1或者都为0的情况下结果是0,否则结果是1,换言之异或就是不带进位的加法将上面两步结合在一起,我们就能把ab转换成((ab)1)(ab),虽然这里仍然有加号,但是我们将其置为新的a和b,循环这个过程,直到进位变成0,这样最终异或结果就是两者之和了注意最终进位一定能变成0,这是因为如果有进位的话,进位是会不断左移的,而题目保证最终结果不会溢出,那么经过若干次循环后,一定会达到一个不需要进位的状态,不然无限左移就会溢出了CJAVA等语言分析到这里就OK了,但python需要特别处理负数问题。因为python的负数表示方法不是像其他语言那样的32位补码,而是更高位也全是1,这样在处理负数的时候必须手动模拟32位补码,才能正确得出结果,不然最后结果就不满足python正确的负数表示方式,而变成无符号正数了所以我们需要先将负数转成32位补码(0xFFFFFFFF,正数仍为自身,负数相当于32位补码形式,因为去掉了更高位上的1),然后利用上述结果求完之后,如果结果是负数(0x7FFFFFFF)的话再转成正常的python负数表示方式((a0xFFFFFFFF),即先对低32位的取反,更高位不变,然后整体再取反,从而将大于等于32位的数字重新转成1)下面代码额外列出了Java版本,方便大家对比。Java的负数就是32位补码表示,所以不需要额外进行处理复杂度时间复杂度O(logN):最多需要遍历所有位数,数字N的位数为logN空间复杂度O(1):只需要维护常数个变量代码python3classSolution:defadd(self,a:int,b:int)int:32位数掩码mask0XFFFFFFFF32位数的最大正数posMx0X7FFFFFFFwhileb!0:a是不带进位的和,都要转成32位整数b是进位,都要转成32位整数循环直到进位为0,那么a就是最终结果sumWithoutCarry(ab)maskcarry((ab)1)maska,bsumWithoutCarry,carry最终如果是32位负数的话,需要将其转回python正常的负数表示形式(高于32位的全是1,而不是32位负数那样更高位全为0),做法是先对低32位的取反,更高位不变,然后整体再取反,从而将大于等于32位的数字重新转成1returnaifaposMxelse(amask)JavaclassSolution{publicintadd(inta,intb){while(b!0){intsumWithoutCarryab;intcarry(ab)1;asumWithoutCarry;bcarry;}returna;}}参考资料
〔1〕
原题链接:https:leetcodecn。comproblemsaddwithoutpluslcci
春天里的小河小学生作文在2月前夕,外婆家门前的小河,仿佛春潮一般,汹涌异常。在一个春气弥漫的早晨,我走过路边开满野花的小道,来到外婆的菜地,观赏着春天的小河。小河的浅水处很弯曲,时不时还……
初中叙事作文我和老师之间发生的误会作文和老师产生误会了,不要辱骂老师,不要苛责老师,毕竟老师也是人,把话说开了,其实就可以解决问题了。天小编就来分享我和老师之间发生的误会作文,请各位读者好好欣赏和借鉴。我和老……
专家解读新版网络安全审查办法发布实施重在压实平台运营者网络安当前社会的网络化进程不断深化,网络已经深刻影响到我国经济发展和民众日常生活,一些大型网络平台甚至已成为支撑社会运转的数字基础设施。网络平台的兴起,体现在其所拥有的数字市场操控能……
理想话题作文素材理想话题作文素材1:ldquo;没有理想rdquo;的李咏(小时候的理想不一定决定未来)李咏是中央电视台的著名主持人,从1998年开始主持《幸运52》,一直深……
乌塔来到我家乡今天是暑假的第一天,我显得特别高兴,因为学校派我给来中国旅游的乌塔作导游,你说我能不高兴吗?我背着背包来到醉仙居,找到306号房。我轻轻敲了敲门,开门的是一个十几岁的小姑……
万兴科技视频创意资源年营收突破千万美元欲打造数字原料工厂证券时报e公司讯,1月8日,万兴科技(300624)举行首届创意资源合作供应商年度总结大会。e公司获悉,万兴科技旗下数字创意资源云平台WondershareFilmstock已……
动物童话故事习作作文动物童话故事习作作文1在阳光明媚的一天,小动物们要给即将生日的小马准备生日礼物了。大家商量之后决定,一起去采蘑菇为小马庆贺。大家来到田野里,走来走去,到处寻找、采集蘑菇。……
妈妈的爱作文小学妈妈的爱作文ldquo;世上只有妈妈好,有妈的孩子像块宝hellip;hellip;rdquo;这首歌唱出了妈妈对孩子的爱,也唱出了我的心声,我亲身体会到了这首歌的含义。……
被指漠视消费者选择权并遭点名后,腾讯视频回应按顺序超前点播9月1日,腾讯视频发布关于优化超前点播服务的声明称,近期,腾讯视频的超前点播逐集解锁的规则受到了社会的广泛关注,上海市消保委也提出了相关意见,腾讯视频对此高度重视。在听取……
团内社交软件会出现三足鼎立翻天覆地的战争吗?首先是占据社交软件霸主地位的腾讯微信,和正在迅速抢占市场的阿里巴巴旗下钉钉,共次是囯家队的三大运营商移动,电信,联通,联合华为等伙伴共同推出的5G消息,也要在社交市场争一席之地……
五年级观后感地球上的星星观后感观看了一部印度电影《地球上的星星》,这是一部探索孩子内心世界的影片,对我震撼很大。突然在一瞬间明白了一句话的真正内涵,世界从来不缺少美,而是缺少发现美的眼睛,也许会因为我们的态……
入学后哪些数码周边值得入手?适合送男生准大学生数码清单随着开学日期的临近,准大学生们也开始了临行前的准备,现在的Z时代00后家庭条件平均水平都还不错,所以男生苹果全家桶游戏本,女生苹果全家桶往往是最常见的组合方式。作为一个数……
助听器耳内机和耳背机哪种戴着会更舒适?我们都知道助听器分为耳背机和耳内机,那么我们佩戴助听器的时候是选择耳背机好呢还是耳内机好?其实很多人都会认为耳内机相较耳背机更为高端,效果更好,其实这种想法是错误的,相同……
诺基亚概念机,全新潮流设计骁龙888,不知能否重回巅峰近日,诺基亚首席执行官佩卡伦德马克发布了一则自己的观点,他认为,对5G无线网络的投资周期将比4G无线网络长得多,这让处于劣势的诺基亚有足够的时间追赶上那些领先的竞争对手,他还表……
鲶鱼特斯拉,开始咬渔夫了渔夫看到桶里的沙丁鱼经常因为好吃懒做缺氧而死,索性在桶里放了条鲶鱼进去,巧妙地利用鲶鱼的凶猛好动激发出来沙丁鱼的求生欲,使后者的存活率大大提高,这就是我们耳熟能详的鲶鱼效应。……
OPPO公关黄宏涛,发引战言论诋毁鸿蒙操作系统,你对此事怎么oppo诋毁鸿蒙操作系统,就是诋毁中国科技,就是诋毁中国人民的尊严,坚决抵制这个美国货oppo,作个有尊严的中国人!黄洪涛可能是美国第五纵队重要人物!必须警惕其不当言论!……
从佛系内卷到现在的躺平,年轻人到底怎么了?从佛系内卷到现在的躺平,说明了两个社会问题,一个是贫富差距太大,年轻人对未来看不到希望。二是在资本家的资本运作下,年轻人不打算接盘了。这无疑触动了资本家的利益,因为年轻人不奋斗……
摔不死的蚂蚁作文300字一次我到阳台去拿东西,突然发现有许多蚂蚁,他们有的在墙壁上爬,有的在地上跑,大约有几百只。他们是从哪来的呢?我观察一会发现他们的家原来在阳台的西南角的一个小洞里,这是我不禁想起……
日媒中美云服务商争夺东南亚来源:环球时报《日本经济新闻》网站5月5日文章,原题:中美云服务商竞逐亚洲在中美科技脱钩看不到修复头绪的背景下,两国大型企业正在云服务领域展开围绕亚洲市场的份额竞争。……
Java8之后的那些新特性(五)HelpfulNullPoi这一周继续聊一聊Java8之后的那些新特性,今天聊一个看似价值不大的新特性,但实质它却与Java语言的一个经常出错的异常有关联。写Java程序的,无论如何也不会不知道一个……
家乡的小河4年级作文400字我的家乡在湖南,我家门前有一条美丽的小河,它虽然没有大海那样壮丽,但我爱这条小河,因为它给我带来了美好和快乐。春回大地,万物复苏。小河边到处是花红柳绿,莺歌燕舞。清澈见底……
等待花开无需停留;无需驻足;无需感叹;只为等待花开。现实有现实的无奈与辛酸,而身处九零后的我们多的是一份大胆与执着。挥一挥衣袖,不带走一片云彩的乔布斯为我们诠释了有梦就有希望,有……
初一叙事作文教养教养一词很多人都知道,但未必能真正理解它的内涵。我起先也不明白,然而在那次,我懂了什么叫教养。记得那天,表叔和表哥来我家做客,表叔有事就先走了。然而天公不作美,不一会就下……
我的好兄弟珍惜现在的兄弟情,让我们一起共创美好未来。??在漫长的人生道路中,有多少同行者,而又有多少的知音!茫茫人海,知音难觅,在人生长河中,我们要做的是取得成就,在我们努力……