79 不用加減乘除做加法
1 題目描述
寫一個函式,求兩個整數之和,要求在函式體內不得使用 “+”、“-”、“*”、“/” 四則運算子號。
示例:
輸入: a = 1, b = 1
輸出: 2
提示:
a, b 均可能是負數或 0
結果不會溢位 32 位整數
2 解題(Java)
- 位運算;
- 無進位和 與 異或運算 相同,進位 和 與運算 相同(並需左移一位);
- 迴圈求無進位和a與進位和b ,直至進位 b = 0;此時 a = n ,返回 nn 即可。
class Solution {
public int add(int a, int b) {
while(b != 0) { // 當進位為 0 時跳出
int c = (a & b) << 1; // c = 進位
a ^= b; // a = 非進位和
b = c;
}
return a;
}
}
3 複雜性分析
- 時間複雜度 O(1): 最差情況下(例如 a= 0x7fffffff , b=1 時),需迴圈 32 次,使用 O(1) 時間;每輪中的常數次位操作使用 O(1) 時間;
- 空間複雜度 O(1) : 使用常數大小的額外空間;
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof
相關文章
- 每日一練(34):不用加減乘除做加法
- 【劍指offer】65. 不用加減乘除做加法
- [每日一題] 第六題:不用加減乘除做加法每日一題
- LeetCode 劍指 Offer 65. 不用加減乘除做加法LeetCode
- shell加減乘除運算
- Verilog實現加減乘除運算
- MongoDB 中的【加減乘除】運算MongoDB
- JS加減乘除位移方法封裝JS封裝
- 簡單的加減乘除(遞迴)遞迴
- 位運算實現加減乘除
- JS 加減乘除 尤其是減法精度問題JS
- 超大整數的加減乘除計算方法
- 高精度四件套(加減乘除)
- JavaScript浮點數加減乘除精確計算JavaScript
- 7-2 算術入門之加減乘除
- 二進位制運算加減乘除+快速冪
- 浮點數的加減乘除運算細節
- 三個數字的加減乘除模運算
- NumPy 簡單算術:加減乘除及其他運算
- java的多項式的加減乘除和賦值Java賦值
- C++筆記:輸入輸出、變數、變數加減乘除C++筆記變數
- 大數模擬 加減乘除 判斷大數是否為素數 板子
- ABAP面試問題 - 不使用加減乘除等操作比較兩個整數大小面試
- Python運算子可不只有加減乘除Python
- BigDecimal加減乘除運算,保留2位小數點,初始化,與0的比較Decimal
- FPGA中加減乘除運算的注意問題FPGA
- 演算法小記·不用四則運算做加法演算法
- Steam好評率83%,如何在DBG玩法中做加減法
- 做完減法做加法:“倖存者”Like流水線上來回橫跳的國產佳作
- 利用Python自動生成小學生加減乘除口算考試題卷,不再為手寫算術題煩惱!Python
- 耗能做減法,效果做加法,西門子洗碗機持續引領綠色生活方式
- 做減法
- 高精度加減乘
- golang 時間加減Golang
- 【oracle】日期加減計算Oracle
- 浮點數加減法
- 大數運算—大數加法、減法、乘法、除法詳解
- JavaScript加減乘數運算JavaScript