1. A + B 问题
中文English
给出两个整数 aa 和 bb , 求他们的和。
样例
样例 1:
输入: a = 1, b = 2
输出: 3
样例解释: 返回a+b的结果.
样例 2:
输入: a = -1, b = 1
输出: 0
样例解释: 返回a+b的结果.
挑战
显然你可以直接 return a + b,但是你是否可以挑战一下不这样做?(不使用++等算数运算符)
说明
a和b都是 32位 整数么?
是的
我可以使用位运算符么?
题目暗示不使用“+”符号进行加法运算,那么我第一时间就想到使用位运算进行操作
使用的是java写的:
public class Solution {
/**
* @param a: An integer
* @param b: An integer
* @return: The sum of a and b
*/
public int aplusb(int a, int b) {
// write your code here
int n1=a,n2=b;
while(n2!=0)
{
int temp=n1;
n1=n1^n2;
n2=(temp&n2)<<1;
}
return n1;
}
}
100% 数据通过测试总耗时 189 ms
您的提交打败了 48.80% 的提交!
可能代码冗余成分导致耗时比较长吧(或者是有人偷鸡直接return a+b么..)