Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
public class Solution {
public int divide(int dividend, int divisor) {
if(dividend==0 || divisor==0){
return 0;
}
int sign = 0;
if((dividend>0 && divisor<0) || (dividend<0 && divisor>0)){
sign = 1;
}
long c = dividend;
long d = divisor;
long a = Math.abs(c);
long b = Math.abs(d);
if(b>a){
return 0;
}
long sum = 0;
int count = 0;
int result = 0;
if(a<b){
return 0;
}
while(a>=b){
count = 1;
sum = b;
while(sum+sum <=a){
sum+=sum;
count+=count;
}
a-=sum;
result+=count;
}
if(sign==1){
result = 0-result;
}
if((result <= -2147483648 && sign==0) ||(result >= 2147483647 && sign==0)){
return 2147483647;
}
return result;
/*int count = 0;
int rest = dividend;
while(rest>=divisor){
rest = rest-divisor;
count++;
}
return count;*/
}
public static void main(String[] args) {
System.out.println(new Solution().divide(-2147483648, -1));
}
}