ソードフィンガーはフィンガービット操作を提供します

。長い間考えた後、それはまだ困惑され、それでは、公式のアイデアを与えてみましょう
:リンクNiuke.comの公式な答え。
ここではいくつかのです好的解法

public class Solution {
    
    
    public int Add(int num1,int num2) {
    
    
        int result = 0;
        int carry = 0;
        do{
    
    
            result = num1 ^ num2;       //不带进位的加法
            carry = (num1 & num2) << 1; //进位
            num1 = result; 
            num2 = carry;  
        }while(carry != 0); // 进位不为0则继续执行加法处理进位
        return result;
    }
}

別のハイスコアソリューション

class Solution {
    
    
public:
    int Add(int num1, int num2)
    {
    
    
        int sum,res;
        while(num2)
        {
    
    
            sum=num1^num2;
            res=(num1&num2)<<1;
            num1=sum;
            num2=res;
        }
        return num1;
    }
};

詳細版

class Solution {
    
    
public:
    int Add(int num1, int num2)
    {
    
    
        return num2 ? Add(num1^num2, (num1&num2)<<1) : num1;
  
    }
};

おすすめ

転載: blog.csdn.net/as1490047935/article/details/110248436