实现方法:
class Solution {
public int divide(int dividend, int divisor) {
boolean flag = dividend > 0 && divisor > 0 || dividend < 0 && divisor < 0 ? true : false;
long x = Math.abs((long) dividend);
long y = Math.abs((long) divisor);
if(x == 0 || y == 1){
if(flag){
return (int)x;
}else{
return -(int)x;
}
}
long ans = 0;
long l = 0, r = x;
while (l < r) {
long mid = l + ((r - l) >> 1);
if (mul(mid, y) <= x) {
l = mid + 1;
} else {
r = mid;
}
}
ans = flag ? l - 1 : -l + 1;
if (ans > Integer.MAX_VALUE || ans < Integer.MIN_VALUE) return Integer.MAX_VALUE;
return (int) ans;
}
public long mul(long a, long k) {
long ans = 0;
while (k > 0) {
if ((k & 1) == 1) ans += a;
k >>= 1;
a += a;
}
return ans;
}
}