常年复制粘贴使我的双手以及大脑都在不断的退化,决定每天抽出一些时间,回归最初打代码的乐趣。刷LintCode只是想记录一下自己学习的过程。通过的代码多是借鉴前辈们写的。自己的写的代码最好的也会卡在TLE上,很是惭愧。
在看到这道题之前我对不使用*号的乘法运算还是有一定基础的,不使用+号的加法运算让我想到了一道经典的面试题如何快速计算2的3次幂?貌似是这个,于是现场百度了一下位运算,恶补了一下。
public int add(int a, int b) {
if(b == 0) return a;
int c = a ^ b;
int d = (a & b) << 1;
return add(c, d);
}