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); }