class Solution {
public int divide(int dividend, int divisor) {
if(dividend == -2147483648 && divisor == -1){
return 2147483647;
}
if(divisor == 1){
return dividend;
}
if(divisor == -1){
return -dividend;
}
boolean flag = true;
if(dividend < 0 && divisor > 0 || dividend > 0 && divisor < 0){
flag = false;
}
int LIMIT = -1073741824;
int a = dividend < 0 ? dividend : -dividend;
int b = divisor < 0 ? divisor : -divisor;
int res = 0;
while(a <= b){
int c = b,d = -1;
while(c >= LIMIT && d >= LIMIT && c >= a - c){
c += c;
d += d;
}
a -= c;
res += d;
}
return flag ? -res : res;
}
}
4/17/26Less than 1 minute