LeetCode(29)Divide Two Integers

来源:互联网 发布:淘宝买家黑名单 编辑:程序博客网 时间:2024/05/23 02:07
class Solution {public:    int divide(int dividend, int divisor) {        if(dividend == -2147483648 && divisor == -1)            return 2147483647;        if(dividend == 0)            return 0;        bool isNegative = false;        if((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0))            isNegative = true;        cout << isNegative << endl;        long long remainder = abs(dividend);        long long divider = abs(divisor);         if(divisor == -2147483648)            divider = 2147483648;        if(dividend == -2147483648)            remainder = 2147483648;        if(remainder < divider)            return 0;        long long shift = 0;        long long quotient = 0;        while(true) {            if(((divider << shift) <= remainder) && ((divider << (shift + 1)) > remainder))                break;            else                shift++;        }        while(true) {            remainder = remainder - (divider << shift);            quotient = quotient + (1 << shift);            if(remainder < divider)                break;            while(true) {                if(((divider << shift) <= remainder) && ((divider << (shift + 1)) > remainder))                    break;                else                    shift--;            }            }        if(isNegative == true)            return -quotient;        else             return quotient;    }};

参考这里

0 0
原创粉丝点击