2020-07-16LintCode No.1

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么..)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。