糖逗 发表于 2020-5-8 14:36:33

C++刷leetcode(面试题 17.01. 不用加号的加法)【位运算】

本帖最后由 糖逗 于 2020-5-8 17:19 编辑

题目描述:

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

示例:

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


提示:

a, b 均可能是负数或 0
结果不会溢出 32 位整数


class Solution {
public:
    int add(int a, int b) {
      unsigned intsum = 0, carry = 0;
      while(b != 0) {
              sum = a ^ b;                       
              carry = (unsigned int)(a & b) << 1;        //负数情况
              a = sum;                       
              b = carry;                       
      }
      return a;
    }
};


参考链接:https://leetcode-cn.com/problems/add-without-plus-lcci/solution/leetcode_17_01_bu-yong-jia-hao-de-jia-fa-by-cengsi/
页: [1]
查看完整版本: C++刷leetcode(面试题 17.01. 不用加号的加法)【位运算】