Divide Two Integers

来源:互联网 发布:好听的网络名字 男孩 编辑:程序博客网 时间:2024/06/05 08:07

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(divisor==0||dividend==INT_MIN&&divisor==-1)return INT_MAX;        if(dividend==0)return 0;        if(divisor==1)return dividend;        int sign;        if(dividend>0&&divisor>0||dividend<0&&divisor<0)sign=1;        else sign=-1;                long long Dividend=labs(dividend);        long long Divisor=labs(divisor);        int ans=0;        while(Dividend>=Divisor)        {            long long int tmp=Divisor;            long long int t=1;            while(Dividend>=(tmp<<1))            {                tmp=tmp<<1;                t<<=1;            }            Dividend-=tmp;            ans+=t;        }        if(sign==1)            return ans;        else return -ans;    }};


原创粉丝点击