Divide Two Integers
Feb 18 '12
Divide two integers without using multiplication, division and mod operator.
<pre name="code" class="java">public class Solution {
public int divide(int dividend, int divisor) {
boolean isNeg = (dividend >= 0) ^ (divisor >= 0);
long divid = Math.abs( (long) dividend);
long divis = Math.abs( (long) divisor);
long quotient = 0;
while(divid>=divis) {
long k = divis;
int i = 0;
while((k<<1)<divid) {
k = k<<1;
++i;
}
divid -= k;
quotient += 1<<i;
}
if(quotient > Integer.MAX_VALUE && !isNeg) return Integer.MAX_VALUE;
return (int) (isNeg? -quotient : quotient);
}
}