leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0029.cpp (1000B)


0 class Solution { 1 public: 2 int divide(int dividend, int divisor) { 3 if (divisor == INT_MIN) return dividend == INT_MIN; 4 if (divisor == INT_MAX) { 5 if (dividend == INT_MIN) return -1; 6 if (dividend == INT_MAX) return 1; 7 return 0; 8 } 9 10 if (divisor == 1) return dividend; 11 if (divisor == -1) { 12 if (dividend == INT_MIN) return INT_MAX; 13 return -dividend; 14 } 15 16 int res = 0, sign = 1; 17 if (divisor < 0) divisor = -divisor, sign = -sign; 18 if (dividend < 0) { 19 if (dividend == INT_MIN) dividend += divisor, res++; 20 dividend = -dividend, sign = -sign; 21 } 22 23 while (dividend >= divisor) { 24 long temp = divisor, count = 1; 25 while (temp << 1 <= dividend) { 26 temp <<= 1; 27 count <<= 1; 28 } 29 dividend -= temp; 30 res += count; 31 } 32 return sign * res; 33 } 34 };