劍指offer第二天

2021-07-12 01:56:01 字數 787 閱讀 8767

分析b[i]=a[0]a[1]…a[i-1]*a[i+1]…*a[n-1]得:

從左到右算 b[i]=a[0]a[1]…*a[i-1]

從右到左算b[i]=a[i+1]…*a[n-1]

public

int multiply(int a)

temp=1;

for(int k=len-1;k>=0;temp*=a[k--])

return b;

}

當看到題目的時候,突然意思到沒有加減乘除還怎麼做運算。仔細想想,計算機每次的計算其實都是利用二進位制的異或,移位實現的。那麼怎麼實現兩個數相加呢?

1.第一步不考慮進製,對每一位相加。0加0與 1加1的結果都0,0加1與1加0的結果都是1。我們可以注意到,這和異或的結果是一樣的。對異或而言,0和0、1和1異或的結果是0,而0和1、1和0的異或結果是1。

2.接著考慮第二步進製,對0加0、0加1、1加0而言,都不會產生進製,只有1加1時,會向前產生乙個進製。此時我們可以想象成是兩個數先做位與運算,然後再向左移動一位。只有兩個數都是1的時候,位與得到的結果是1,其餘都是0。

3. 第三步把前兩個步驟的結果相加。

思路是:

第一步,求不進製相加和sum

第二步,求進製carry

第三部,sum和carry*10的和

//注意最後一步還是得遞迴呼叫自己,直到進製為0,因為前面兩個步驟相加還是只能利用二進位制的方法實現

int add(int num1,int num2)

劍指Offer66題之每日6題 第二天

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。n 39。斐波拉契數列的定義 用f1,f2分別表示 fi 2,fi 1,用ret表示fifi,每次令ret f1 f2,sum就表示fi得到fn,然後把f1,f2分別更新為fi 1,fi,依次類推,sum的值就是最終fn的...

上班第二天

本想坐晚一班車的,誰知道這晚一班的也只是晚了 五 六分鐘,不高興再在站台上等,也只好小跑到車門上去了,果然,八點十分就到了。白天那個困啊 今天的工作內容和昨天一樣,做到後來我實在覺得測的差不多了,想幹些其他的,但這初來乍到的,也不好幹其他的呀,況且領導辦公室就在我旁邊。今天的工作總結有兩點 1 別把...

第二天實習

今天我早早到了銀行,開始給大家抹桌子,算是向愛妃學習吧。之後向wqy學習做表的方法,他很耐心。今天一天也就是做了這麼乙個表,但是還向dh學習了另外一些業務的處理,收穫不小。中午吃了雞腿 肉串和芸豆,好開心啊。我越來越喜歡自己的實習了。今天好多自己班上的同學來面試實習生,希望她們都能上!今天我沒有去同...