#leetcode刷题之路29- 两数相除

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend 除以除数 divisor 得到的商。

示例 1:
输入: dividend = 10, divisor = 3
输出: 3
示例 2:
输入: dividend = 7, divisor = -3
输出: -2

 

int divide(int dividend, int divisor) {

    int count=0;
    if((dividend>INT32_MAX||dividend<INT32_MIN)||(divisor>INT32_MAX||divisor<INT32_MIN)) return INT32_MAX;
    if((dividend)==INT32_MIN&&(divisor==INT32_MIN)) return  1;
    if((dividend)==INT32_MIN&&(divisor==1)) return INT32_MIN;
    if(divisor==INT32_MIN) return 0;
    if((dividend)==INT32_MIN&&(divisor==-1)) return INT32_MAX;
    if(dividend==INT32_MIN)
    {
        bool flag=0;
        if(divisor<0) flag=1;
        divisor=(divisor>0)?divisor:-divisor;
        while(dividend<=0)
        {
            dividend+=divisor;
            count++;
        }
        return flag?count-1:1-count;
    }
    if(dividend==0||abs(dividend)<abs(divisor)) return count;
    if(divisor==1) return dividend;
    if(divisor==-1) return -dividend;
    else if(dividend>0&&divisor>0||dividend<0&&divisor<0)
    {
         dividend=abs(dividend);
        divisor=abs(divisor);
        while (dividend>=0)
        {
            dividend-=divisor;
            count++;
        }
        return (count-1);
    }
    else if(dividend<0&&divisor>0||dividend>0&&divisor<0)
    {
        dividend=(dividend>0)?dividend:-dividend;
        divisor=(divisor>0)?divisor:-divisor;
        while (dividend>=0)
        {
            dividend-=divisor;
            count++;
        }
        return  1-count;
    }
    return 0;
}

 

posted @ 2019-03-20 01:22  maitianpt  阅读(182)  评论(0编辑  收藏  举报