第一章:整数
面试题1:整数除法
题目
参考代码
public int divide(int dividend, int divisor) {
if (dividend == 0x80000000 && divisor == -1){
return Integer.MAX_VALUE;
}
int negative = 2;
if (dividend > 0) {
negative--;
dividend = -dividend;
}
if (divisor > 0) {
negative--;
divisor = -divisor;
}
int result = divideCore(dividend, divisor);
return negative == 1 ? -result : result;
}
private int divideCore(int dividend, int divisor) {
int result = 0;
while (dividend <= divisor) {
int value = divisor;
int quotient = 1;
while (value >= 0xc0000000 && dividend <= value + value) {
quotient += quotient;
value += value;
}
result += quotient;
dividend -= value;
}
return result;
}面试题2:二进制加法
题目
参考代码
面试题3:前n个数字二进制中1的个数
题目
参考代码
解法一
解法二
解法三
面试题4:只出现一次的数字
题目
参考代码
面试题5:单词长度的最大乘积
题目
参考代码
Last updated