力扣练习之两整数之和

我爱海鲸 2023-05-29 21:09:36 力扣、中级算法

简介中级算法、其他、Rust

原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xwaiag/

解法一(python)

class Solution:
    def getSum(self, a: int, b: int) -> int:
        mask = 0xffffffff   # 定义掩码,确保计算过程中不会越界
        while b:
        # 通过异或运算计算 a 和 b 不考虑进位的和
        # 通过与运算计算 a 和 b 的进位
            a, b = (a ^ b) & mask, ((a & b) << 1) & mask
        # 对结果进行符号处理
        return a if a <= 0x7fffffff else ~(a ^ mask)

解法二(Rust)

fn get_sum(a: i32, b: i32) -> i32 {
    let (mut a, mut b) = (a as u32, b as u32);
    let mut carry;
    while b != 0 {
        carry = a & b;
        a ^= b;
        b = carry << 1;
    }
    a as i32
}

思路:可以使用位运算符来实现两整数之和的计算。具体地说,可以使用异或运算符计算两数不考虑进位的和,使用与运算符计算进位的位置,并将进位和两数不考虑进位的和重复进行上述操作,直到进位为0,即可得到最终结果。

你好:我的2025