文章目录
题意
思路
注意边界判断
代码
C++
class Solution {
public:
int divide(int a, int b) {
if (a == INT_MIN && b == -1)
return INT_MAX;
int flag = false;
if (a >= 0 && b >= 0 ||
a <= 0 && b <= 0)
flag = true;
int ans = 0;
a = -abs(a);
b = abs(b);
if (b == 1)
return flag ? -a : a;
if (abs(a) == abs(b))
return flag ? 1 : -1;
while (a + b <= 0)
{
int i = 0;
while (a + (b << i) < 0 && INT_MAX - (b << i) > (b << i))
i++;
if (i)
i--;
a += (b << i);
ans += 1 << i;
}
return flag ? ans : -ans;
}
};