范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

程序员面试金典面试题17。01。不用加号的加法

  题目难度: 中等
  原题链接  [1]
  今天继续更新程序员面试金典系列, 大家在公众号   算法精选   里回复  面试金典   就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。 示例:输入: a = 1, b = 1 输出: 2 提示:a, b 均可能是负数或 0 结果不会溢出 32 位整数 题目思考不能用四则运算, 那还能用哪些运算符来实现呢? 解决方案思路我们先来尝试分析数字的二进制表示, 看看能否用位运算来替代加法 如果某一位的两个数字都是 1, 那么这一位的加法就会产生进位, 所以 与  可以用来计算进位, 而且显然进位是要左移一位的接下来考虑如何得到当前位的加法结果.  异或  在两个数字都为 1 或者都为 0 的情况下结果是 0, 否则结果是 1, 换言之异或就是不带进位的加法 将上面两步结合在一起, 我们就能把  a+b   转换成((a&b)<<1)+(a^b)  , 虽然这里仍然有加号, 但是我们将其置为新的 a 和 b, 循环这个过程, 直到进位变成 0, 这样最终异或结果就是两者之和了注意最终进位一定能变成 0, 这是因为如果有进位的话, 进位是会不断左移的, 而题目保证最终结果不会溢出, 那么经过若干次循环后, 一定会达到一个不需要进位的状态, 不然无限左移就会溢出了 C++/JAVA 等语言分析到这里就 OK 了, 但 python 需要特别处理负数问题. 因为 python 的负数表示方法不是像其他语言那样的 32 位补码, 而是更高位也全是 1, 这样在处理负数的时候必须手动模拟 32 位补码, 才能正确得出结果, 不然最后结果就不满足 python 正确的负数表示方式, 而变成无符号正数了 所以我们需要先将负数转成 32 位补码 ( &0xFFFFFFFF  , 正数仍为自身, 负数相当于 32 位补码形式, 因为去掉了更高位上的 1), 然后利用上述结果求完之后, 如果结果是负数(>0x7FFFFFFF  )的话再转成正常的 python 负数表示方式(~(a ^ 0xFFFFFFFF)  , 即先对低 32 位的取反, 更高位不变, 然后整体再取反, 从而将大于等于 32 位的数字重新转成 1)下面代码额外列出了 Java 版本, 方便大家对比. Java 的负数就是 32 位补码表示, 所以不需要额外进行处理 复杂度时间复杂度 O(logN): 最多需要遍历所有位数, 数字 N 的位数为 logN 空间复杂度 O(1): 只需要维护常数个变量 代码python 3class Solution:     def add(self, a: int, b: int) -> int:         # 32位数掩码         mask = 0XFFFFFFFF         # 32位数的最大正数         posMx = 0X7FFFFFFF         while b != 0:             # a是不带进位的和, 都要转成32位整数             # b是进位, 都要转成32位整数             # 循环直到进位为0, 那么a就是最终结果             sumWithoutCarry = (a ^ b) & mask             carry = ((a & b) << 1) & mask             a, b = sumWithoutCarry, carry         # 最终如果是32位负数的话, 需要将其转回python正常的负数表示形式(高于32位的全是1, 而不是32位负数那样更高位全为0), 做法是先对低 32 位的取反, 更高位不变, 然后整体再取反, 从而将大于等于 32 位的数字重新转成 1         return a if a <= posMx else ~(a ^ mask) Javaclass Solution {     public int add(int a, int b) {         while (b != 0)         {             int sumWithoutCarry = a ^ b;             int carry = (a & b) << 1;             a = sumWithoutCarry;             b = carry;         }         return a;     } } 参考资料
  [1]
  原题链接: https://leetcode-cn.com/problems/add-without-plus-lcci/

贝索斯与亚马逊的27年车库卖书到商业帝国来源北京商报1994年,杰夫贝索斯辞去了他在对冲基金公司的工作,在西雅图的一个车库里创办了亚马逊。过去27年,乘着互联网的风,亚马逊从图书在线销售平台成了万亿市值的科技巨头,贝索斯摄影爱好者,你挑器材的时候,着重考虑什么,是什么说了算?做为摄影爱好者,挑选器材的时候,更多的是考虑银子,然后才是需求,最终是性价比说了算。我是这样认为的,当然,我也有为了真心喜欢的镜头,宁愿以泡面度日,也要先收入囊中的经历。这种经历真有没有拼多多的铁粉,自从有了拼多多,淘宝现在都不用了的那种?讲真,拼多多刚出来那会儿我也买了不少捂脸捂脸。因为是一种崭新的购物方法,我也感觉好奇。以下的问题我只是实话实说,没有任何歧义。网络购物就是这样,首先你要有一双火眼金睛,其次多看几家去独家后,音乐平台怎样发展?为更多音乐人提供展示才华的空间终于可以一站式听歌了吗?版权争夺战要结束了?近日,腾讯音乐网易云音乐先后开启去独家行动,引发网友热议。业内专家指出,独家音乐版权时代的结束,对平台用户70后适合什么手机?70后现在的年纪已经在41岁50岁之间,这个年龄段的人群,他们经历了改革开放,从贫穷到富裕的整个过程,也是文化程度较高的一群人。现在成了家庭和社会的中流砥柱。虽说年纪大的已经有五十长津湖已经上映了,看过的朋友是什么看法?真实的战场比这个要残酷好多,可能南方的朋友没有在冰天雪地里的经验,当人长时间在零下几十的野外,还饿着肚子,手脚会生冻疮,会烂掉。特别是晚上急行军,会出一身汗,内衣都湿透,然后隐蔽的iPhoneX应该买64G还是256G?要说现在手机储存的发展真的是非常快速,从以前的512M到现在的512G,真的可以说有着翻天覆地的变化,那么对于苹果x来说,究竟是64GB的好还是256GB的好呢?其实,对于储存来说百度地图和高德地图哪个更好用?我本人经常自驾车出差,常驾车去的地方有山东辽宁河北等地。毎次出差一上车就设置导航,我有两部手机,一部是oppo的,自带百度地图另一部是苹果的,自带高德地图。导航的时候这两部手机转流产业互联网一场加速产业化学反应的艰难变革如果说互联网上半场是消费互联网,那么中场就是产业互联网,下半场则是万物互联。而中国向高质量发展的转型更是突显了产业互联网难以替代的社会意义及经济价值,投资机构则用真金白银做出最好注为什么被黑的总是华为?华为到底招谁惹谁了?树大招风的道理你没听说过么?只有强者才配得上这般侮辱,其他的连侮辱都不配无有入无闲,古代的间闲是通用的。无有就是空,所以无有进入到任何地方,都没有间隔没有间隔也就是空。或者说墙壁阻华为手机真的能免费上网吗?华为手机真的能免费上网吗?许多头条和抖音小视频都有这样的广告,说下载某个软件,华为手机可以免费上网,不需要流量,是真的吗?怎么说呢,如果是接入免费的WiFi,就能免费上网,确实不需
小米12Ultra曝光搭载台积电骁龙8Gen1Plus芯片,自研芯片联名徕卡对于小米12Ultra的外观已经基本上实锤了,从年初就有渲染图曝光,可以看做是VIVOX80将圆形模组居中了,由于骁龙持续摆烂的原因迟迟没有发布。骁龙近两年的旗舰芯片均由三星代工生不要迷恋Kindle,国产电纸书中Poke4与Poke4s也值得入手喜欢阅读是个十分优良的习惯,但是对于实体书的投入,确实是个无底洞,而且对于在外租房一族来说,搬家带来的不便就总让人头大。所以电子书算是很好的一个选择,在之前大家印象中的电纸书品牌可春夏家电换购建议飞利浦IAM等空净闭眼入,都是全能王春夏季一直都是家电换购的旺季,不仅是因为这两个季节是装修热门时期,更是因为夏季是电商活动力度最大的时候。而作为近几年的新晋热门家电空气净化器,在618即将到来前,也不甘示弱。这时候天玑8100150W快充,真我GTNeo3卖爆,三大核心亮点是关键如果你最近刚好准备买手机,价位在2500元左右,可以选择的机型还是非常多的。刚好前段时间我也是花了半个月的工资入手了realme真我GTNeo3,已经使用了差不多两个月的时间,这款三星两款折叠新品曝光台积电版骁龙8祖传25W手机圈里对折叠屏投入最多的要数三星了,目前仍是这一细分市场的一哥,而近日网上也曝光了三星两款折叠屏新机的渲染图,其中三星Flip4将继续延用上下折叠的翻盖设计,造型上没有太大的变化懒人家务福音,扫地机最终形态,石头G10SPro扫地机器人长测体验回顾这些年我使用扫地机的经历,可以说见证了一个时代的变化。扫地机从一开始的智障家电,进化成为了扫拖全能,不仅可以自己集尘,自己洗拖布,还具备优秀避障能力,可以说离最初的解放双手初心魅族19X奇袭,5500mAh天玑9000,性价比才是亮点魅族今年深陷收购传闻,截止目前,没有任何一款新机发布。众多用户表示,魅族不再做手机了吗?此前发布会上魅族也没有明确新机的消息,仅有一些手机周边发布。对于其它手机厂商,魅族确实很淡定华为手机鸿蒙系统隐藏了9个实用功能,长按2秒自动开启,太厉害了华为手机鸿蒙系统其实还隐藏和很多实用功能,每一个都非常好用,但是往往会被大家所忽略。今天帮大家整理了全网最全的关于华为手机长按2秒隐藏的实用功能,绝对有你不知道的功能,建议大家点赞郑强我们引以为豪的手机支付一击即溃郑强教授在一次演讲中公开表明我们在金融(支付方式)方面做到世界第一,今天这个支付方式,明天那个支付方式,搞得我们挺便利的,德国美国日本三大制造强国都没玩这个东西,并不代表他不现代化现在的手机市场,为什么越来越无聊了?最近我想把手中用了两年的华为p40pro换掉,但是看了一圈,发现最近的手机圈好像没有什么比较有意思的机器,甚至最近这一两年来,手机圈都非常的平淡,或者说无趣,因为自从华为被漂亮国制那些Android13上超实用新功能盘点,网友不像iOS16那么抠搜的一年一度的谷歌开发者大会已经落下帷幕,Android13的发布引起不少人的关注。作为智能手机市场的两大阵营之一,在iOS持续挤牙膏的情况下Android受到的期待值一直在逐年飙升。