资讯专栏INFORMATION COLUMN

LeetCode29.两数相除 JavaScript

shiyang6017 / 1939人阅读

摘要:给定两个整数,被除数和除数。将两数相除,要求不使用乘法除法和运算符。返回被除数除以除数得到的商。示例输入输出示例输入输出说明被除数和除数均为位有符号整数。假设我们的环境只能存储位有符号整数,其数值范围是。

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

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

示例 1:

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

示例 2:

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

说明:
被除数和除数均为 32 位有符号整数。
除数不为 0
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。本题中,如果除法结果溢出,则返回 2^31 − 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;
    }
};

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101768.html

相关文章

  • leetcode29.两数相除

    摘要:原题给定两个整数,被除数和除数。将两数相除,要求不使用乘法除法和运算符。返回被除数除以除数得到的商。右移位,等价于,除以的次方。当除以时,结果相较于除数会非常的小。我们使用循环逐渐减少右移的位数,逐渐逼近除数,当时等于,大于等于。 showImg(https://segmentfault.com/img/remote/1460000020181895); 原题 给定两个整数,被除数 d...

    googollee 评论0 收藏0
  • 6-9月技术文章汇总

    摘要:分布式的管理和当我在谈论架构时我在谈啥状态码详解无状态协议和请求支持哪些方法分层协议栈有哪些数据结构运用场景说说你常用的命令为什么要有包装类面向对象的特征是啥是啥有什么好处系统设计工程在线诊断系统设计与实现索引背后的数据结构及算法原理软技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】当我在谈论RestFul架构时我在谈啥?...

    miya 评论0 收藏0
  • 两数相除——不允许使用高级运算

    摘要:两数相除不允许使用高级运算实现两整数相除,不允许使用乘法除法和取余运算。如果左移一位的除数过大,除数还原。注意处理除法运算中正负号的问题。代码本题以及其它题目代码地址地址 两数相除——不允许使用高级运算 Divide Two Integers 实现两整数相除,不允许使用乘法、除法、和取余运算。 如果结果溢出(int范围为-2147483648 ~ 2147483647),返回MAX_...

    _Zhao 评论0 收藏0
  • LeetCode2.两数相关 JavaScript

    摘要:两数相加给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。你可以假设除了数字之外,这两个数字都不会以零开头。 LeetCode2.两数相加 JavaScript 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例: 输入:(...

    gghyoo 评论0 收藏0
  • LeetCode1.两数之和JavaScript

    摘要:两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。实例给定因为所以返回答案参考执行 LeetCode1.两数之和JavaScript 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。实例: 给定 nums = [2, 7, 11, 1...

    Scliang 评论0 收藏0

发表评论

0条评论

shiyang6017

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<