剑指 offer set 26 不用加减乘除做加法
生活随笔
收集整理的這篇文章主要介紹了
剑指 offer set 26 不用加减乘除做加法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
總結
1. Leetcode 上有一道題, 是不用乘除做乘法, 那道題算是背包問題的變形
2. 不用加減乘除, 還可以用移位操作
3. 將數字轉成二進制格式, 然后運用二進制亦或, 移位運算解決
3.1 僅考慮各位相加, 不考慮進位, num1 ^ num2
3.2 僅考慮進位, (num1 & num2) << 1;
3.3 將上面兩步的和加起來
?
?code
#include <iostream> using namespace std;int Add(int num1, int num2) {int sum, carry;do {sum = num1 ^ num2;carry = (num1 & num2) << 1;num1 = sum;num2 = carry;} while(num2 != 0);return num1; }int main() {cout << Add(-11, 12) << endl;return 0; }
轉載于:https://www.cnblogs.com/xinsheng/p/3564221.html
總結
以上是生活随笔為你收集整理的剑指 offer set 26 不用加减乘除做加法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员的情书!
- 下一篇: 类似 Google Tips 页面的卡片