在二分搜索专题里做到的题,但我没有用二分搜索而直接用了遍历,发现运行时间也不多,可能是测试数据给的不好吧,我懒得在用二分做了…
class Solution {
public:
int divide(long long dividend, long long divisor) {
bool flag = dividend >= 0 ^ divisor >= 0;
dividend = abs(dividend);
divisor = abs(divisor);
long long di,d, ret = 0, i;
while (dividend >= divisor)
{
di = divisor;
d=1;
while (dividend >= (di<<1))
{
di<<=1;
d<<=1;
}
dividend-=di;
ret+=d;
}
if (flag) {
if (ret > INT_MAX) return INT_MIN;
else return -ret;
}
else {
return ret>INT_MAX ? INT_MAX : ret;
}
}
};