29. Divide Two Integers
Given two integers dividend
and divisor
, divide two integers without using multiplication, division and mod operator.
Return the quotient after dividing dividend
by divisor
.
The integer division should truncate toward zero.
Example 1:
Input: dividend = 10, divisor = 3 Output: 3
Example 2:
Input: dividend = 7, divisor = -3 Output: -2
题意:实现两个整数相除的函数,不能使用乘,除,余运算符
代码如下:
/** * @param {number} dividend * @param {number} divisor * @return {number} */ const MAX_VALUE=Math.pow(2,31)-1; const MIN_VALUE=Math.pow(-2,31); var divide = function(dividend, divisor) { var sign=1; if((dividend>0 && divisor<0) || (dividend<0 && divisor>0)){ sign=-1; } var ldividend=Math.abs(dividend); var ldivisor=Math.abs(divisor); if(ldivisor==0) return MAX_VALUE; if(ldividend==0 || ldividend<ldivisor) return 0 var lans=ldivide(ldividend,ldivisor); var ans; if(lans>MAX_VALUE){ ans=(sign==1)? MAX_VALUE:MIN_VALUE; }else{ ans=sign*lans; } return ans; }; var ldivide=function(ldividend,ldivisor){ if(ldividend<ldivisor) return 0; var sum=ldivisor; var multiple=1; while((sum+sum) <= ldividend){ sum+=sum; multiple+=multiple; } return multiple+ldivide(ldividend-sum,ldivisor) };