29. 两数相除

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。

返回被除数 dividend 除以除数 divisor 得到的商。

示例 1:
输入: dividend = 10, divisor = 3
输出: 3

示例 2:
输入: dividend = 7, divisor = -3
输出: -2

题解

效率极低 挖个坑

/**
 * @param {number} dividend
 * @param {number} divisor
 * @return {number}
 */
var divide = function(dividend, divisor) {
    let i=divisor,num=0
    if(Math.abs(dividend)<Math.abs(divisor)){
        return 0
    }
    if(Math.abs(divisor)==1){
        if((dividend>0&&divisor>0)||(dividend<0&&divisor<0)){
            if(Math.abs(dividend)==2147483648){
                return Math.abs(dividend)-1
            }
            return Math.abs(dividend)
        }else{
            return -Math.abs(dividend)
        }
    }
    while(Math.abs(i)<=Math.abs(dividend)){
        num++
        i+=divisor
    }
    if((dividend>0&&divisor<0)||(dividend<0&&divisor>0)){
        return -num
    }
    return num
};

发表评论

您的电子邮箱地址不会被公开。