剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)
生活随笔
收集整理的這篇文章主要介紹了
剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 題目
寫一個函數(shù),求兩個整數(shù)之和,要求在函數(shù)體內(nèi)不得使用 “+”、“-”、“*”、“/” 四則運算符號。
示例: 輸入: a = 1, b = 1 輸出: 2提示: a, b 均可能是負(fù)數(shù)或 0 結(jié)果不會溢出 32 位整數(shù)來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 位運算
類似題目:LeetCode 371. 兩整數(shù)之和(位運算)
- 將a+b,拆成 不帶進(jìn)位的加法a^b,進(jìn)位(a&b)<<1
- 進(jìn)位為0則結(jié)束
循環(huán)寫法
class Solution { public:int add(int a, int b) {int sum;while(b){sum = a^b;//不帶進(jìn)位的加法b = (unsigned int)(a&b)<<1;//b是進(jìn)位a = sum;//a是和,當(dāng)b進(jìn)位為0時,結(jié)束}return a;} };遞歸寫法
class Solution { public:int add(int a, int b) {if(b == 0)return a;return add(a^b, (unsigned int)(a&b)<<1);} };總結(jié)
以上是生活随笔為你收集整理的剑指Offer - 面试题65. 不用加减乘除做加法(位运算,要看哦)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1010. 总持续时间
- 下一篇: 剑指Offer - 面试题15. 二进制