题解 | #不用加减乘除做加法#

不用加减乘除做加法

https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=265&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FjudgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D13%26type%3D265&difficulty=&judgeStatus=3&tags=&title=&gioEnter=menu

剑指offer都是技巧题

class Solution {
public:
    int Add(int num1, int num2) {
      //  一个存放相加之后不进位的信息,一个存放进位后要相加的位
      //  直到满足不再进位
      return num2 ? Add(num1 ^ num2, (num1 & num2) << 1) : num1;
    }
};
class Solution {
public:
    int Add(int num1, int num2) {
      //  进位以及两数不进位之和
      int carry = (num1 & num2) << 1;
      num1 = num1 ^ num2;
      
      while (carry) {
        int tmp = num1;
        //  得出当前轮的不进位之和
        num1 = num1 ^ carry;
        //  上一轮的数据与上一轮的进位相加,判断下一轮的进位
        carry = (tmp & carry) << 1;
      }
      
      return num1;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务