Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6432946

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /