• Java实现 LeetCode 371 两整数之和


    371. 两整数之和

    不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。

    示例 1:

    输入: a = 1, b = 2
    输出: 3
    示例 2:

    输入: a = -2, b = 3
    输出: 1
    PS:

       sum = a ^ b;  //异或这里可看做是相加但是不显现进位,比如5 ^ 3
                     /*0 1 0 1
                       0 0 1 1
                     ------------
                       0 1 1 0      
                  上面的如果看成传统的加法,不就是1+1=2,进1得0,但是这里没有显示进位出来,仅是相加,0+1或者是1+0都不用进位*/
        
        carry = (a & b) << 1;
        
                    //相与为了让进位显现出来,比如5 & 3
                    /* 0 1 0 1
                       0 0 1 1
                     ------------
                       0 0 0 1
                  上面的最低位1和1相与得1,而在二进制加法中,这里1+1也应该是要进位的,所以刚好吻合,但是这个进位1应该要再往前一位,所以左移一位*/
        
    
    class Solution {
        public int getSum(int a, int b) {
     return b == 0 ? a : getSum(a^b,(a&b)<<1); 
        }
    }
    
  • 相关阅读:
    Java线程死锁模拟
    Arrays Multi
    PHP Forms
    simple grammer
    有意义的命名 Meaningful names
    整洁代码
    XPath
    多态
    复用类
    访问控制权限
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946540.html
Copyright © 2020-2023  润新知