LeetCode 29 - Divide Two Integers

来源:互联网 发布:多线程编程java 方法 编辑:程序博客网 时间:2024/06/16 17:06

Divide Two Integers

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

My Code

class Solution {public:    int divide(int dividend, int divisor) {        if (divisor == 0)            return INT_MAX;        if (dividend == 0)            return 0;        if (divisor == 1)            return dividend;        if (divisor == -1)            if (dividend == INT_MIN)                return INT_MAX;            else                return -dividend;        int sign = (dividend > 0 ^ divisor > 0) ? -1 : 1;        long long_dividend = abs((long)dividend);        long long_divisor = abs((long)divisor);        int result = 0;        while (long_dividend >= long_divisor)        {            long val = long_divisor;            long multiplier = 1;            while (long_dividend > (val << 1))            {                multiplier <<= 1;                val <<= 1;            }            result += multiplier;            long_dividend -= val;        }        return sign * result;    }};
Runtime: 8 ms

0 0
原创粉丝点击