leetCode 371 兩整數之和

2021-10-10 13:20:06 字數 855 閱讀 6891

目錄

一、題目描述

二、解題思路

三、**實現

不使用運算子 + 和 - ,計算兩整數 a 、b ​​​​​​​之和。

示例 1:

輸入:a = 1, b = 2

輸出:3

示例 2:

輸入:a = -2, b = 3

輸出:1

這題標籤是到簡單題,但如果不熟悉位運算,怎麼看怎麼不簡單。

二進位制的加法就以下幾種情況,

1+1 = 0 (有進製)

1+0 = 1 (無進製)

0+0 = 0 (無進製)

0+1 = 1 (無進製)

如果不考慮進製,這個就是無進製加法操作,但是還要加上進製的資料才是真正的結果。進製資料如何得到呢?觀察上面式子,只有1+1的時候會產生進製,所以做與操作就能得到進製的資料,但是這個進製資料需要往前移位,因為進製資料是加在上一位資料的,及(a & b)<< 1;這裡還需要注意一下負數如果左移的話,符號位會溢位,所以需要轉換成無符號整數防止溢位。

可以遞迴也可以迭代,退出的條件是直到相異或的兩個數不會產生進製為止。

int getsum(int a, int b) 

return a;

}

總結:位運算還是不熟悉,沒有第一時間的反應,還是得加強這方面的知識應用啊!!!

LeetCode371 兩整數之和

不使用運算子 和 計算兩整數a b之和。示例 若 a 1 b 2,返回 3。calculate the sum of two integers a and b,but you are not allowed to use the operator and example given a 1 and ...

Leetcode 371 兩整數之和

不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2 輸出 3 示例 2 輸入 a 2,b 3 輸出 1 class solution return res 極端情況比較能說明問題 a 0111 1111 b 0000 0001 a b 0111 1110 a b 1 0000...

LeetCode 371 兩整數之和

不使用運算子 和 計算兩整數 a b 之和。示例 1 輸入 a 1,b 2輸出 3示例 2 輸入 a 2,b 3輸出 1先把a和b按位 與 再左移一位就得到了進製的結果,把該結果記為carry。然後把a和b異或,得到的是不算進製的加法結果,然後把該結果賦給a,把carry賦給b,判斷當b大於0時,說...