https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&tqId=11201&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
| 日期 | 是否一次通过 | comment |
|----|----|----|
|2019-01-26 13:20|N|对位运算理解不够:异或表示非进位的加法,与表示进位|
|2019-01-26 13:20|N|递归方法没写好|
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
1. 递归
public class Solution {
public int Add(int num1,int num2) { // (结果,进位)
if((num1 & num2) == 0) {
return num1 ^ num2;
}
return Add(num1 ^ num2, (num1 & num2) << 1); // 注意下符号优先级,移位的优先级高于与
}
}
2.非递归
public class Solution {
public int Add(int num1,int num2) {
while(num2 != 0) {
int num = num1 ^ num2;
int carry = (num1 & num2)<<1;
num1 = num;
num2 = carry;
}
return num1;
}
}
网友评论