0
点赞
收藏
分享

微信扫一扫

LeetCode Top Interview Questions 371. Sum of Two Integers (Java版; Easy)

一天清晨 2023-01-18 阅读 36


​​welcome to my blog​​

LeetCode Top Interview Questions 371. Sum of Two Integers (Java版; Easy)

题目描述

Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

Example 1:

Input: a = 1, b = 2
Output: 3
Example 2:

Input: a = -2, b = 3
Output: 1

第一次做; 对加减法的理解

  1. a + b 的问题拆分为: a 和 b 的无进位相加结果 + a 和 b 的进位结果
  2. 无进位相加通过异或计算
  3. 进位结果通过与和移位计算
  4. 关键: 循环2,3两步,直到进位为 0

//负数, 以原码的形式思考还是以补码的形式思考? 感觉计算机是以补码的形式思考, 所以我也用补码的形式思考吧
//异或: 无进位相加
//核心: 抓住两个量:1)异或的结果 2)相与再左移一位的结果; 细节: 1)循环终止条件是相与再左移一位的结果为0 2)最后的xor就是结果
class Solution {
public int getSum(int a, int b) {
//异或的结果
int xor = a^b;
//相与再左移一位的结果
int andL1 = (a&b)<<1;
while(andL1!=0){
int tmp = xor;
xor = tmp ^ andL1;
andL1 = (tmp & andL1)<<1;
}
return xor;
}
}


举报

相关推荐

0 条评论