寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。
一開始考慮轉化成位來計算,但是這樣**結構非常複雜且當出現負數時就難以計算。
之後轉化思維,從十進位制數字計算的本身上來看:
兩個數(ab+cd)的計算過程可以看成是:
a+c=e,b+d=f,如果e,f大於10,就保留ef 的個位數。
如果出現進製就向前+1。
舉個例子:13+18
3. 1+1 =2 ,3+8=11保留1
4. 因為3——8有進製,所以向前加1 :2+1 =3,最後結果是31
轉化成二進位制則:
01101+10010
1. 首先進行異或操作:即按位相加但是不進製:01101 ^ 10010 = 11111
2. 接著進行與操作並左移一位:即進製:(01101 & 10010) <<1 = 00000
3. 判斷進製的結果是否為0,如果為零說明沒有進製了,過程結束,否則繼續第一步
public class solution while(num2 != 0);
return sum;
}}
菜鳥刷題之路 Q13
問題來自牛客劍指offer 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。問題和尋找發帖水王屬於同一問題。即尋找眾數。問題可以看成是對陣列中的數進行計數。利用hashmap來作...
菜鳥刷題之路 Q16
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。問題用hashmap解決是很容易想到的。使用異或運算的特點也可以解決該問題。將陣列的值作為key存入hashmap 1 當該值存在於hashmap中,刪除它 2 當該值不存在加入它 最後整個hashmap中剩...
菜鳥刷題之路 Q17
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路採用的中序遍歷,實現的是採用非遞迴。將左指標指向前節點,右節點指向後節點。public treenode convert treenode prootoftree prootoftr...