class Solution {
public:
    int divide(int dividend, int divisor) {
        if (divisor == 0 || (dividend == INT_MIN && divisor == -1)) return INT_MAX;
        long long m = abs((long long)dividend), n = abs((long long)divisor), res = 0;
        int sign = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1;
        if (n == 1) return sign == 1 ? m : -m;
        while (m >= n) {
            long long t = n, p = 1;
            while (m >= (t << 1)) {
                t <<= 1;
                p <<= 1;
            }
            res += p;
            m -= t;
        }
        return sign == 1 ? res : -res;
    }
};

相关文章:

  • 2022-01-24
  • 2021-11-04
  • 2021-12-22
  • 2021-05-23
  • 2021-10-23
  • 2021-08-10
  • 2021-11-13
猜你喜欢
  • 2021-08-06
  • 2022-03-04
  • 2021-07-04
相关资源
相似解决方案