Divide Two Integers

来源:互联网 发布:淘宝网客服电话400 编辑:程序博客网 时间:2024/06/05 20:07

Divide Two Integers

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

Java代码:

public class Solution {    public int divide(int dividend, int divisor) {        long dividend_l = (long)dividend;        long divisor_l = (long)divisor;        int sign = (dividend > 0 && divisor > 0) ||                    (dividend < 0 && divisor < 0) ? 1 : -1;        dividend_l = Math.abs(dividend_l);        divisor_l= Math.abs(divisor_l);        if (dividend_l < divisor_l) {            return 0;        }        long div_base = divisor_l;        long base = 1;        while ((div_base << 1) <= dividend_l) {            base <<= 1;            div_base <<=1;        }        long value = 0;        while (dividend_l > 0 && div_base >= divisor_l) {            if (dividend_l >= div_base) {                value += base;                dividend_l -= div_base;            }            base>>=1;            div_base>>=1;        }        if (sign > 0) {            return (int)Math.min(value, Integer.MAX_VALUE);        } else {            return (int)-value;        }    }}


0 0
原创粉丝点击