成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【手把手帶你刷LeetCode】——15.劍指offer之不用加減乘除做加法(位運算)

QLQ / 2472人閱讀

摘要:前言今天是力扣打卡第天天天做遞歸做煩了,換換腦子,嘿嘿。原題不用加減乘除做加法題目描述寫一個函數(shù),求兩個整數(shù)之和,要求在函數(shù)體內(nèi)不得使用四則運算符號。補碼的優(yōu)勢加法減法可以統(tǒng)一處理只有加法器。

【前言】

今天是力扣打卡第15天!

天天做遞歸做煩了,換換腦子,嘿嘿。

原題: 不用加減乘除做加法

題目描述:

寫一個函數(shù),求兩個整數(shù)之和,要求在函數(shù)體內(nèi)不得使用 “+”、“-”、“*”、“/” 四則運算符號。

示例:

輸入: a = 1, b = 1輸出: 2

?題解:

如果是十進制的話,我們?nèi)绾瓮瓿杉臃ㄓ嬎隳兀?/p>

比如99 + 111 = ?

第一步:計算進位的數(shù)字:
1 + 9 = 10;
10 + 90 = 100;
得到進位結果:110

第二步:個、十、百位 的數(shù)字分別相加先不管進位的問題:

個位:9 + 1 = 0
十位:9 + 1 = 0
百位:0 + 1 = 1
得到臨時結果:100

第三步:相加得到結果:
100 + 110 = 210

如何用二進制完成以上的步驟呢?

問題1: 二進制的加法利用以上的步驟可以得到正確的結果嗎?
12 二進制:1100
15 二進制:1111

第一步:計算進位的數(shù)字:
0100 + 0100 = 1000
1000 + 1000= 10000
得到進位結果:11000

第二步:做不進位加法
1100 + 1111 = 0011
得到臨時二進制結果:0011

第三步:將第一步和第二步結果相加得到答案
0011 + 11000 = 11011(十進制:27)
就目前來看,是可以的。

問題2:第一步驟不用加法如何得到相同結果?相與并且左移一位
如果相&能得到1 ,那么表示,對應位置上的數(shù)字都是1,然后再往左移動一位,就是步驟一?進位得到的結果

(1100 & 1111) << 1 = 11000

問題3:第二步驟不用加法如何得到相同結果?異或(俗稱不進位加法)
異或:相同為0,相異為1

1100 ^ 1111 = 0011

問題4:第三步驟不用加法如何得到相同結果?其實這是個套娃
第三步不用加法實現(xiàn)最難,因為第三步是前兩步的和,還是個加法;如果不用加法,就只能不斷調用前兩步的步驟。

但是這里難想的是什么時候停下來呢?

當不再需要進位就代表停止了,即進位的結果是0的時候停止

代碼執(zhí)行:

int add(int a, int b){    //因為不允許用+號,所以求出異或部分和進位部分依然不能用+號,所以只能循環(huán)到?jīng)]有進位為止       while(b){        //保存進位值,下次循環(huán)用        int c = (a & b) << 1;        //保存不進位值,下次循環(huán)用        a = a ^ b;             b = c;    }    //如果還有進位,再循環(huán),如果沒有,則直接輸出沒有進位部分即可    return a;}

Q : 若數(shù)字 a?和 b 中有負數(shù),則變成了減法,如何處理?
A : 在計算機系統(tǒng)中,數(shù)值一律用 補碼 來表示和存儲。補碼的優(yōu)勢: 加法、減法可以統(tǒng)一處理(CPU只有加法器)。因此,以上方法 同時適用于正數(shù)和負數(shù)的加法

結語

今天是力扣打卡第15天!

我想吐槽一下,這道題在力扣上面顯示的是“簡單”,但是我硬生生沒想出來怎么做,嗚嗚嗚,多虧力扣上面的大佬們,抱拳了。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/123350.html

相關文章

  • 把手你刷LeetCode】——11.二叉搜索樹的范圍和(DFS)

    摘要:大家簡單看一下純遞歸的解法原題二叉搜索樹的范圍和解法題目描述給定二叉搜索樹的根結點,返回值位于范圍之間的所有結點的值的和。 【前言】 今天是力扣打卡第11天! 感謝鐵汁們的陪伴,一起加油鴨?。? 在第9天的時候寫過這道題的遞歸解題方法,其實DFS使用的解題思想就是遞歸,所以大同小異啦...

    HelKyle 評論0 收藏0
  • 把手你刷好題】——21.一道筆試題(非力扣)

    摘要:前言今天是刷題打卡第天可能有鐵汁會問,為什么變成刷好題,而不是刷了呢因為最近筆者遇到很多經(jīng)典的筆試題,想著記錄下來,方便大家和自己學習,所以今后筆者會在標題上注明是不是力扣題。 【前言】 今天是刷題打卡第21天! 可能有鐵汁會問,為什么變成刷好題, 而不是刷LeetCode 了呢?因為...

    騫諱護 評論0 收藏0
  • 把手你刷好題】——30.楊輝三角(作業(yè))

    摘要:聲明這里只是作業(yè)上面的內(nèi)容,后續(xù)還會更新更好的方法。前言今天是刷題打卡第天蕪湖,堅持一個月咯,蟹蟹大家的陪伴哈原題楊輝三角題目描述在屏幕上打印楊輝三角。 【聲明】 這里只是作業(yè)上面的內(nèi)容,后續(xù)還會更新更好的方法。? 【前言】? 今天是刷題打卡第30天! 蕪湖,堅持一個月咯,蟹蟹大...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<