Divide Two Integers

来源:互联网 发布:类似陌陌快聊的软件 编辑:程序博客网 时间:2024/06/07 08:06

题意:

不用乘法除法取模运算,求两个整数相除的结果;

分析:


参考代码如下:

http://www.programcreek.com/2014/05/leetcode-divide-two-integers-java/

public int divide(int dividend, int divisor) {    //handle special cases    if(divisor==0) return Integer.MAX_VALUE;    if(divisor==-1 && dividend == Integer.MIN_VALUE)        return Integer.MAX_VALUE;     //get positive values    long pDividend = Math.abs((long)dividend);    long pDivisor = Math.abs((long)divisor);     int result = 0;    while(pDividend>=pDivisor){        //calculate number of left shifts        int numShift = 0;            while(pDividend>=(pDivisor<<numShift)){            numShift++;        }         //dividend minus the largest shifted divisor        result += 1<<(numShift-1);        pDividend -= (pDivisor<<(numShift-1));    }     if((dividend>0 && divisor>0) || (dividend<0 && divisor<0)){        return result;    }else{        return -result;    }}


0 0
原创粉丝点击