整数除法
题目1:输入2个int 整数,他们进行除法计算并返回商,要求不得使用乘号'*',除号'/',及求余号'%',当发生溢出时,返回最大的整数值。假设除数不为0.例如,输入15和2,输出 15/2的结果,即 7.
代码 js
点击展开
function divide(dividend, divisor){
var dividend = dividend;
var divisor = divisor;
var negative = 2;
if(dividend < 0) {
negative--;
dividend = -dividend;
}
if(divisor < 0) {
negative--;
divisor = -divisor;
}
var result = divideCore(dividend, divisor);
return negative == 1 ? -result : result;
}
function divideCore(dividend, divisor) {
var dividend = dividend;
var divisor = divisor;
var result = 0;
while(dividend >= divisor) {
var value = divisor;
var quotient = 1;
while(dividend >= value + value) {
quotient += quotient;
value += value;
}
result += quotient;
dividend -= value;
}
return result;
}
console.log(divide(-7, 3));
代码 Java
点击展开
public class Interview02 {
public static void main(String[] args) {
Interview02 interview02 = new Interview02();
System.out.println(interview02.divide01(0x80000000,-1));
}
public int divide01(int dividend, int divisor) {
if (dividend == 0x80000000 && divisor == -1) {
return Integer.MAX_VALUE;
}
int negative = 2;
if (dividend < 0){
dividend = -dividend;
negative--;
}
if (divisor < 0) {
divisor = -divisor;
negative--;
}
int result = divideCore(dividend,divisor);
return negative == 1 ? -result : result;
}
public int divideCore(int dividend, int divisor){
int result = 0;
while (dividend > divisor) {
int value = divisor;
int quotient = 1;
while (value >= 0xc0000000 && dividend >= value + value) {
value += value;
quotient += quotient;
}
result += quotient;
dividend -= value;
}
return result;
}
}