本文共 1114 字,大约阅读时间需要 3 分钟。
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; } }}
转载地址:http://cpuni.baihongyu.com/