两数相除
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend 除以除数 divisor 得到的商。
整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
示例 1:
输入: dividend = 10, divisor = 3
输出: 3
解释: 10/3 = truncate(3.33333..) = truncate(3) = 3
1
2
3
2
3
/**
* @param {number} dividend
* @param {number} divisor
* @return {number}
*/
var divide = function(dividend, divisor) {
if (dividend == -2147483648 && divisor == -1) return 2147483647;
var isPositive = (dividend > 0 && divisor > 0) || (dividend < 0 && divisor < 0)
var dividend = dividend < 0 ? -dividend : dividend
var divisor = divisor < 0 ? -divisor : divisor
if (divisor > dividend) {
return 0
}
var res = 0
var sum = 0
while (dividend >= divisor) {
sum = dividend - divisor - divisor - divisor
if (sum >= 0) {
dividend = sum
res += 3
} else {
dividend -= divisor
res++
}
}
return isPositive ? (res > 2147483647 ? 2147483647 : res) : (-res < -2147483648 ? -2147483648 : -res)
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/divide-two-integers
← 实现 strStr() 下一个排列→