面試題 實現兩個數的和,不能用「 」「 」

2021-06-29 13:39:32 字數 497 閱讀 6823

這道題目和之前leetcode中的二進位制加法很相似。由於無法使用運算子,我們可以改用對位的操作。

如果不考慮進製的話:1+1=0,1+0=1,0+1=1,0+0=0,這剛好是異或計算^。

對於進製,正好是按位與&,左移一位之後的結果

在將兩者進行異或,之後再計算進製,直到沒有進製,完成運算,

同樣有兩種實現方式,**如下

/**

* 遞迴方式

* @param x

* @param y

* @return

*/public static int addtwo(int x,int y)

/*** 非遞迴方式

* @param x

* @param y

* @return

*/public static int addtwo2(int x,int y)

return result;

}

面試題57 和為S的兩個數字

題意 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s,如果有多對數字的和等於s,輸出兩個數的乘積最小的。思路 假設有兩個指標l,r分別在陣列的中,並且num l num r sum 因為這個陣列是有序的,很明顯我們可以知道 對於這個num l 所有的num r num ...

兩個面試題

1.實現乙個lite版的字串替換函式 c c char strreplace char str,const char sub,const char rep 限制條件和要求如下 1.其中str為原字串,sub為待被替換的子串。為簡單起見,假定字串sub和rep長度一樣 2.直接對原字串str進行修改並...

面試題 兩個佇列實現棧

兩個佇列實現棧 前提已知 typedef struct queue queue void initqueue queue q void enqueue queue q,int key int dequeue queue q int sizeofqueue queue q int isqueueemp...