• LeetCode29.两数相除 JavaScript


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

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

    示例 1:

    输入: dividend = 10, divisor = 3
    输出: 3

    示例 2:

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

    说明:

    • 被除数和除数均为 32 位有符号整数。
    • 除数不为 0。
    • 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。

    答案参考:

    /**
     * @param {number} dividend
     * @param {number} divisor
     * @return {number}
     */
    
    var divide = function (dividend, divisor) {
        let result = 0, sign = 1, mul = 1;
        if ((dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0)) {
            sign = -1;
        }
        dividend = Math.abs(dividend);
        divisor = Math.abs(divisor);
     
        divisor2 = divisor;
     
        while (dividend >= divisor2) {
            if (dividend > (divisor2 + divisor2)) {
                divisor2 += divisor2;
                mul += mul;
            }
            dividend -= divisor2;
            result += mul;
        }
        while (dividend >= divisor) {
            dividend -= divisor;
            result += 1;
        }
     
        if (sign == 1 && result > (Math.pow(2, 31) - 1)) {
            return Math.pow(2, 31) - 1;
        } else if (sign == -1 && result < -Math.pow(2, 31)) {
            return -Math.pow(2, 31);
        }
        if (sign == 1) {
            return result;
        } else {
            return -result;
        }
    };
  • 相关阅读:
    按不同国家语言进行字符串排序
    ASP.net的客户端脚本
    MSN photo upload tool
    Cool SMIL
    asp.net 2.0 中无刷新机制
    EF Code First 学习笔记:约定配置
    EF Code First学习笔记 初识Code First
    Silverlight、XAML实现滚动文字
    使用Nlog记录日志到数据库
    WCF:如何将net.tcp协议寄宿到IIS
  • 原文地址:https://www.cnblogs.com/lhh520/p/10392702.html
Copyright © 2020-2023  润新知