Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.題目要求咱們在不借助乘法運算、除法運算和模運算的基礎上,求出輸入的兩個整數相除的結果。若是溢出,那麼返回MAX_INT。其中第一個參數是被除數,第二個參數是除數。ide
public int divide(int dividend, int divisor) { boolean isPositive = true; if((dividend < 0 && divisor >0) || (dividend > 0 && divisor < 0)){ isPositive = false; } long ldividend = Math.abs((long)dividend); long ldivisor = Math.abs((long)divisor); if(ldivisor == 0)return Integer.MAX_VALUE; if(ldividend == 0)return 0; long lans = ldivide(ldividend, ldivisor); int ans; if (lans > Integer.MAX_VALUE){ ans = (isPositive)? Integer.MAX_VALUE : Integer.MIN_VALUE; } else { ans = (isPositive) ? (int)lans : -(int)lans; } return ans; } private long ldivide(long ldividend, long ldivisor) { if (ldividend < ldivisor) return 0; long sum = ldivisor; long multiple = 1; while ((sum+sum) <= ldividend) { sum += sum; multiple += multiple; } return multiple + ldivide(ldividend - sum, ldivisor); }