Skip to content

Commit 7556274

Browse files
author
Kohei Asai
authored
Update solution: 69. Sqrt(x) (#80)
1 parent 75d9f05 commit 7556274

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

solutions/sqrtx.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,18 @@ describe("69. Sqrt(x)", () => {
1414
});
1515

1616
test("#4", () => {
17-
expect(mySqrt(1)).toBe(1);
17+
expect(mySqrt(8)).toBe(2);
1818
});
1919

2020
test("#5", () => {
21-
expect(mySqrt(0)).toBe(0);
21+
expect(mySqrt(1)).toBe(1);
2222
});
2323

2424
test("#6", () => {
25+
expect(mySqrt(0)).toBe(0);
26+
});
27+
28+
test("#7", () => {
2529
expect(mySqrt(Number.MAX_SAFE_INTEGER)).toBe(94906265);
2630
});
2731
});

solutions/sqrtx.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
11
// 69. Sqrt(x)
22
// https://leetcode.com/problems/sqrtx/
3-
function mySqrt(x: number): number {
3+
export default function mySqrt(x: number): number {
44
if (x <= 1) return x;
55

6-
let searchRangeStart = 0;
7-
let searchRangeEnd = x;
6+
let from = 1;
7+
let to = x;
88

9-
while (searchRangeStart < searchRangeEnd - 1) {
10-
const middle = Math.floor((searchRangeStart + searchRangeEnd) / 2);
11-
const divided = Math.floor(x / middle);
9+
while (from <= to) {
10+
const middle = Math.floor((from + to) / 2);
11+
const squareOfMiddle = middle * middle;
1212

13-
if (divided === middle) return middle;
13+
if (squareOfMiddle === x) return middle;
1414

15-
if (middle > divided) {
16-
searchRangeEnd = middle;
15+
if (squareOfMiddle < x) {
16+
from = middle + 1;
1717
} else {
18-
searchRangeStart = middle;
18+
to = middle - 1;
1919
}
2020
}
2121

22-
return searchRangeStart;
22+
return to;
2323
}
24-
25-
export default mySqrt;

0 commit comments

Comments
 (0)