8000 divide-two-integers · malipramod/leetcode-js@6432946 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6432946

Browse files
committed
divide-two-integers
1 parent d60a3c9 commit 6432946

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* @param {number} dividend
3+
* @param {number} divisor
4+
* @return {number}
5+
*/
6+
var divide = function (dividend, divisor) {
7+
if (divisor === 0) return 0;
8+
if (dividend === 0) return 0;
9+
if (dividend === -2147483648 && divisor === -1) return 2147483647;
10+
11+
var isPositive = true;
12+
if (dividend > 0 !== divisor > 0) isPositive = false;
13+
14+
divisor = Math.abs(divisor);
15+
dividend = Math.abs(dividend);
16+
17+
var count = 1,
18+
result = 0,
19+
base = divisor;
20+
21+
while (dividend >= divisor) {
22+
count = 1;
23+
base = divisor;
24+
while (base <= (dividend >> 1)) {
25+
base = base << 1;
26+
count = count << 1;
27+
}
28+
result += count;
29+
dividend -= base;
30+
}
31+
32+
if (!isPositive) result = -result;
33+
return result;
34+
};
35+
console.log(divide(2147483647, 3));
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* @param {number} dividend
3+
* @param {number} divisor
4+
* @return {number}
5+
*/
6+
var divide = function(dividend, divisor) {
7+
const INT_MAX = Math.pow(2, 31) - 1;
8+
const INT_MIN = -Math.pow(2, 31);
9+
const sign = (divisor ^ dividend) < 0 ? -1 : 1;
10+
dividend = Math.abs(dividend);
11+
divisor = Math.abs(divisor);
12+
let count = 0;
13+
while (dividend >= divisor) {
14+
dividend -= divisor;
15+
count++;
16+
}
17+
return count * sign > INT_MAX ? INT_MAX * sign : count *sign < INT_MIN ? INT_MIN * sign : count * sign;
18+
};
19+
console.log(divide(2147483647,-3));
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Divide Two Integers
2+
3+
Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.
4+
5+
Return the quotient after dividing dividend by divisor.
6+
7+
The integer division should truncate toward zero.
8+
9+
## Example 1
10+
11+
Input: dividend = 10, divisor = 3
12+
13+
Output: 3
14+
15+
## Example 2
16+
17+
Input: dividend = 7, divisor = -3
18+
19+
Output: -2
20+
21+
## Note
22+
23+
Both dividend and divisor will be 32-bit signed integers.
24+
25+
The divisor will never be 0.
26+
27+
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 231 − 1 when the division result overflows.
28+
29+
## More Info
30+
31+
<https://leetcode.com/problems/divide-two-integers/>

0 commit comments

Comments
 (0)
0