要求:不用乘除取余
思路:直接减法会超时,要成倍
class Solution {
public:
int divide(int dividend, int divisor) {
if (dividend == INT_MIN && divisor == -1)
return INT_MAX;
if (divisor == 1)
return dividend;
bool flag = true;
if ((dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0))
flag = false;
if (dividend > 0) dividend = -dividend;
if (divisor > 0) divisor = -divisor;
int ans = 0;
while(1) {
int a = dividend, b = divisor, cnt = 1;
if (a > b) break;//这里是负数
while(a - b <= b) {
cnt += cnt;
b += b;
}
ans += cnt;
dividend -= b;
}
return flag ? ans : -ans;
}
};