[leetcode 29] Divide Two Integers

来源:互联网 发布:菠萝饭软件类似的软件 编辑:程序博客网 时间:2024/06/11 18:50

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

If it is overflow, return MAX_INT.


class Solution {public:    int divide(int dividend, int divisor) {        if (dividend == INT_MIN && divisor == -1) {            return INT_MAX;        }        if (dividend == 0) {            return 0;        }        long long a = dividend>=0?dividend:-(long long)dividend;        long long b = divisor>=0?divisor:-(long long)divisor;        long long res = 0;        while (a>=b) {            long long c = b;            for (int i = 0; a >= c; ++i, c <<= 1) {                a -= c;                res += 1<<i;            }        }        return ((dividend^divisor)>>31)?-res:res;    }};


0 0
原创粉丝点击