每天一道劍指offer 不用加減乘除做加法

2021-09-26 13:10:35 字數 825 閱讀 5093

考試結束,班級平均分只拿到了年級第二,班主任於是問道:大家都知道世界第一高峰珠穆朗瑪峰,有人知道世界第二高峰是什麼嗎?正當班主任要繼續發話,只聽到角落默默響起來乙個聲音:」喬戈里峰

每天一道劍指offer-不用加減乘除做加法

寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。

思路

首先看十進位制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算進製,得到2。 第二步:計算進製值,得到10. 如果這一步的進製值為0,那麼第一步得到的值就是最終結果。

第三步:重複上述兩步,只是相加的值變成上述兩步的得到的結果2和10,得到12。

同樣我們可以用三步走的方式計算二進位制值相加: 5-101,7-111 第一步:相加各位的值,不算進製,得到010,二進位制每位相加就相當於各位做異或操作,101^111。

第二步:計算進製值,得到1010,相當於各位做與操作得到101,再向左移一位得到1010,(101&111)<<1。

第三步重複上述兩步, 各位相加 010^1010=1000,進製值為100=(010&1010)<<1。 繼續重複上述兩步:1000^100 = 1100,進製值為0,跳出迴圈,1100為最終結果。

**

public class solution while(carry != 0);	

return sum;

} }

每天一道劍指Offer 30

date 2020 7 18 連續子陣列的 最大和 注意 子陣列的起點不一定是0 hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個...

每天一道劍指offer 翻轉單詞順序列

牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....

每天一道劍指offer 求1 2 3 n

考試結束,班級平均分只拿到了年級第二,班主任於是問道 大家都知道世界第一高峰珠穆朗瑪峰,有人知道世界第二高峰是什麼嗎?正當班主任要繼續發話,只聽到角落默默響起來乙個聲音 喬戈里峰 每天一道劍指offer 求1 2 3 n 求1 2 3 n,要求不能使用乘除法 for while if else sw...