Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
//Submission Result: Time Limit Exceeded
public class Solution {
public long divide(int dividend, int divisor) {
if(divisor == 0) return Integer.MAX_VALUE;
int dividendAbs = Math.abs(dividend);
long sum = Math.abs(divisor), i = 0,getValue = 1;
while(sum<=dividendAbs) {
sum+=sum;
i++;
}
if(i == 0) return 0;
getValue<<=--i;
sum>>=1;
while(sum < dividendAbs) {
getValue++;
sum+=divisor;
}
if(sum>dividendAbs) getValue--;
return (dividend <= 0 && divisor >0 || dividend >= 0 && divisor <0) == true?-getValue:getValue;
}
}
Have you met this question in a real interview?
无乘除模运算实现整数相除
本文探讨了一种方法,在不使用乘法、除法和取模操作符的情况下,实现两个整数之间的相除操作,并在溢出情况下返回最大整数值。
2723

被折叠的 条评论
为什么被折叠?



