源代码:https://github.com/ianxin/Algorithm/tree/master/src
问题描述:
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
思路:
a+b可以分为三步来,比如a=3,b=2
- a的二进制是0011, b的二进制是0010,如果不考虑进位a+b的结果为0001。
- 只考虑进位,结果是0011+0010=0010
- 将该进位左移一位,变为00100
- 将00100再与0001进行异或,得到00101,即十进制下等于5
- 结束
常规 Python 解法如下:
|
|
但是,此解法在数据较大时运行时间过长,无法通过测试。
更改后的解法如下:
|
|