题目:https://leetcode.com/problems/divide-two-integers/
对减法进行优化,采用类似快速幂的方式
注意溢出特判
class Solution {
public:
int divide(int dividend, int divisor) {
if (divisor == 0 || (dividend == INT_MIN && divisor == -1))
return INT_MAX;
long long a = abs(dividend*1ll);
long long b = abs(divisor*1ll);
long long ans = 0;
while (a >= b) {
long long c = b;
for (int i = 0; c <= a; ++i, c <<= 1) {
a -= c;
ans += 1<<i;
}
}
if (((dividend<0)^(divisor<0)) == 1)
return -ans;
return ans;
}
};