leetcode刷题05

Posted 纯正肉包

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode刷题05相关的知识,希望对你有一定的参考价值。

 

设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。

示例:

输入: a = 1, b = 1
输出: 2



解:使用加法器的原理
加法器需要三步 1.a和b异或的结果 2.a+b的进位c,3.c和下面一次的相加

 

  step1=a^b,step2=a&b,step3=(a&b)<<1   举个例子,c的二进制 ····0010, d的二进制 ····0010  (c&d)=0010 左移一位0100,我们本来就应该进个1的

class Solution {
public:
    int add(int a, int b) {
        if(b==0)
            return a;
        int step1=0, step2=0, step3=0;
        while(b!=0){
            step1 = a^b;
            step2 = a&b;
            step3 = (unsigned int)step2 << 1;
            a = step1;
            b = step3;
        }
        return step1;
    }
};

作者:Eric_Light
链接:https://leetcode-cn.com/problems/add-without-plus-lcci/solution/bu-yong-hao-de-jia-fa-by-oneway-4/

 

以上是关于leetcode刷题05的主要内容,如果未能解决你的问题,请参考以下文章

刷题LeetCode刷刷刷 — 2021-05-31

刷题LeetCode刷刷刷 — 2021-05-31

leetcode刷题05

刷题LeetCode刷刷刷 — 2021-05-30

Leetcode刷题100天—110.平衡二叉树(AVL树)—day05

LeetCode刷题--点滴记录005