【牛客网】另类加法

题目

【牛客网】另类加法_第1张图片

思路

  1. 考虑使用位运算进行解决
  2. 两个数异或的结果是两个数相加不考虑进位的结果(不考虑进位) 两个数与左移一位的结果,是两个数相加之后进位的结果(只考虑进位)
  3. 结论:两个数相加,如果不需要进位,即与左移等于0,则这个给值就是两个数相加 的值

代码

import java.util.*;

public class UnusualAdd {
    public int addAB(int A, int B) {
        if(B == 0){
            return A;
        }
        int sum = 0;
        int temp = 0;
        while(B != 0){
            sum = A^B;
            temp = (A & B) << 1;
            A = sum;
            B = temp;
        }
        return sum;
    }
}

你可能感兴趣的:(牛客网,算法,java,开发语言)