剑指 Offer II 001. 整数除法

128 阅读1分钟

50. Pow(x, n)

const myPow = (x, n) => {
    if (n === 0) return 1;
    if (n < 0) return 1 / myPow(x, -n);
    if (n & 1) return x * myPow(x, n - 1);
    return myPow(x * x, n / 2);
};

剑指 Offer II 001. 整数除法

这是官网题解

image.png

var divide = function(a, b) {
    if(a == -2147483648 && b == -1){
        return 2147483647
    }
    // tag为true表示结果为负数,false表示结果为正数
    let tag = false
    if((a > 0 && b < 0) || (a < 0 && b > 0)){
        tag = true
    }
    // 把两数都置为正数
    a = a > 0 ? a : -a
    b = b > 0 ? b : -b
    let res = 0
    while(a >= b){
        let base = b
        let count = 1
        while(a >= base){
            a -= base
            res += count
            base *= 2
            count *= 2
        }
    }
    return tag ? -res : res
};