码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-03-20 09:14:49      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:style   turn   int   输入   min   etc   else   pre   end   

给定两个整数,被除数 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;
}

 

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

标签:style   turn   int   输入   min   etc   else   pre   end   

原文地址:https://www.cnblogs.com/biat/p/10562490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!