// 类似二进制分解吧,每次找最靠近2^k * devisor,然后减去
class Solution {
public int divide(int divident, int divisor){
if (divisor == 0) return 0;
if (divisor == 1) return divident;
if (divident == Integer.MIN_VALUE && divisor == -1)
return Integer.MAX_VALUE;
long up = Math.abs((long)divident);
long down = Math.abs((long)divisor);
int ans = 0;
for (int i = 31; i >= 0; i--){
if ((up >> i) >= down){
ans += 1 << i;
up -= down << i;
}
}
ans = (divident ^ divisor) < 0 ? -ans : ans;
return ans;
}
}

202

被折叠的 条评论
为什么被折叠?



