Skip to content

Commit 0ac54a1

Browse files
committed
1222
1 parent e8d8955 commit 0ac54a1

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
|26|[Remove Duplicates from Sorted Array](https://leetcode.com/problems/remove-duplicates-from-sorted-array/)| [JavaScript](./algorithms/Remove Duplicates from Sorted Array.js)|Easy|
2929
|27|[Remove Element](https://leetcode.com/problems/remove-element/)| [JavaScript](./algorithms/Remove Element.js)|Easy|
3030
|28|[Implement strStr()](https://leetcode.com/problems/implement-strstr/)| [JavaScript](./algorithms/Implement strStr().js)|Easy|
31+
|29|[Divide Two Integers](https://leetcode.com/problems/divide-two-integers//)| [JavaScript](./algorithms/Divide Two Integers.js)|Medium|
3132
|371|[Sum of Two Integers](https://leetcode.com/problems/sum-of-two-integers/)| [JavaScript](./algorithms/Sum of Two Integers.js)|Easy|
3233
|372|[Super Pow](https://leetcode.com/problems/super-pow/)| [JavaScript](./algorithms/SuperPow.js)|Medium|
3334

algorithms/Divide Two Integers.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* @param {number} dividend
3+
* @param {number} divisor
4+
* @return {number}
5+
*/
6+
var divide = function(dividend, divisor) {
7+
var MAX_INT = Math.pow(2, 31) - 1,
8+
MIN_INT = -Math.pow(2, 31),
9+
result = 0,
10+
newDividend = Math.abs(dividend),
11+
newDivisor = Math.abs(divisor),
12+
flag;
13+
if (newDividend < newDivisor) {
14+
return 0;
15+
}
16+
if (dividend >= 0 && divisor > 0 || dividend <= 0 && divisor < 0) {
17+
flag = 1;
18+
} else {
19+
flag = -1;
20+
}
21+
while (newDividend >= newDivisor) {
22+
var temp = newDivisor,
23+
i = 0;
24+
while (newDividend >= temp << 1) {
25+
if ((temp << 1) <= 0) {
26+
break;
27+
}
28+
temp = temp << 1;
29+
i++;
30+
if (flag > 0 && i > 29) {
31+
return MAX_INT;
32+
}
33+
if (flag < 0 && i > 30) {
34+
return MIN_INT;
35+
}
36+
}
37+
newDividend -= temp;
38+
result += Math.pow(2, i);
39+
}
40+
if (flag > 0) {
41+
return result;
42+
} else {
43+
return -result;
44+
}
45+
};

0 commit comments

Comments
 (0)