#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;
}

 

转载于:https://www.cnblogs.com/biat/p/10562490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值