29 - Divide Two Integers
JAVA
class Solution { public int divide(int a, int b) { if (b == 1) { return a; } if (a == Integer.MIN_VALUE && b == -1) { return Integer.MAX_VALUE; } boolean sign = (a > 0 && b > 0) || (a < 0 && b < 0); a = a > 0 ? -a : a; b = b > 0 ? -b : b; int ans = 0; while (a <= b) { int x = b; int cnt = 1; while (x >= (Integer.MIN_VALUE >> 1) && a <= (x << 1)) { x <<= 1; cnt <<= 1; } ans += cnt; a -= x; } return sign ? ans : -ans; } }
C++
class Solution { public: int divide(int a, int b) { if (b == 1) { return a; } if (a == INT_MIN && b == -1) { return INT_MAX; } bool sign = (a > 0 && b > 0) || (a < 0 && b < 0); a = a > 0 ? -a : a; b = b > 0 ? -b : b; int ans = 0; while (a <= b) { int x = b; int cnt = 1; while (x >= (INT_MIN >> 1) && a <= (x << 1)) { x <<= 1; cnt <<= 1; } ans += cnt; a -= x; } return sign ? ans : -ans; } };
Comments
Post a Comment