除以两个整数

时间:2019-11-17 06:23:36

标签: javascript

我在leetcode上做了以下问题:https://leetcode.com/problems/divide-two-integers/

给出问题

给出两个整数被除数和除数,将两个整数相除而不使用乘法,除法和mod运算符。

除以除数后的商。

整数除法应截断为零。

示例:

输入:股息= 10,除数= 3 输出3 示例2:

输入:除数= 7,除数= -3 输出:-2

注意:
  1. 被除数和除数都是32位带符号整数。
  2. 除数永远不会为0。
  3. 假设我们正在处理一个只能存储32位有符号整数范围内的整数的环境:[−231,231 − 1]。出于这个问题的目的,假设除法结果溢出时您的函数返回231 − 1。

我的解决方案

为此,我编写了以下代码,对于其中一个测试用例,我的时间已超出

var divide = function(dividend, divisor) {
    let quoitent = 0
     if (divisor === dividend) quoitent = 1
    let negativeDevisor = divisor < 0 ? true : false 
    let negativeDevident = dividend < 0 ? true : false
    if (negativeDevisor !== negativeDevident) {
        if (negativeDevisor) {
            let i = 0
            while (divisor !== 0) {
                divisor++
                i++
            }
            divisor = i
        } else if (negativeDevident) {
            let i = 0
            while (divisor !== 0) {
                divisor--
                i--
            }
            divisor = i
        }     
    }
     while (divisor<dividend) {
          dividend = dividend - divisor 
          quoitent++
     }
    if ((negativeDevisor || negativeDevident) && (negativeDevisor !== negativeDevident)) {
        let i = 0
        while (quoitent !== 0) {
            i--
            quoitent--
        }
        quoitent = i
    }
    if (negativeDevisor && negativeDevident) {
        while (divisor>dividend) {
          dividend = dividend - divisor 
          quoitent++
     }
    }
    return quoitent
};


console.log(divide(-2147483648, -1))

我的问题

这是什么意思?

  

假设我们正在处理一个只能存储的环境   32位有符号整数范围内的整数:[− 231,231 − 1]。对于   为此问题的目的,假设您的函数返回231 − 1   当除法结果溢出时。

有人可以修复我的算法或编写有效的代码。在讨论部分,我看到许多人使用Math.abs,floor等,但我认为我们不允许使用它们吗?

0 个答案:

没有答案