LeetCode第29題 Divide Two Integers(兩數相除)
阿新 • • 發佈:2018-12-09
class Solution { public: int divide(int dividend, int divisor) { if(!divisor || (dividend == INT_MIN && divisor == -1))return INT_MAX; int flag = ((dividend < 1) ^ (divisor < 0)) ? -1 : 1; long long divd = labs(dividend); long long divs = labs(divisor); int ans = 0; while(divd >= divs){ long long temp = divs, mul = 1; while(divd >= (temp<<1)){ temp <<= 1; mul <<= 1; } ans += mul; divd -=temp; } return flag == 1 ? ans : -ans; } };