File tree Expand file tree Collapse file tree 2 files changed +17
-15
lines changed Expand file tree Collapse file tree 2 files changed +17
-15
lines changed Original file line number Diff line number Diff line change @@ -14,14 +14,18 @@ describe("69. Sqrt(x)", () => {
14
14
} ) ;
15
15
16
16
test ( "#4" , ( ) => {
17
- expect ( mySqrt ( 1 ) ) . toBe ( 1 ) ;
17
+ expect ( mySqrt ( 8 ) ) . toBe ( 2 ) ;
18
18
} ) ;
19
19
20
20
test ( "#5" , ( ) => {
21
- expect ( mySqrt ( 0 ) ) . toBe ( 0 ) ;
21
+ expect ( mySqrt ( 1 ) ) . toBe ( 1 ) ;
22
22
} ) ;
23
23
24
24
test ( "#6" , ( ) => {
25
+ expect ( mySqrt ( 0 ) ) . toBe ( 0 ) ;
26
+ } ) ;
27
+
28
+ test ( "#7" , ( ) => {
25
29
expect ( mySqrt ( Number . MAX_SAFE_INTEGER ) ) . toBe ( 94906265 ) ;
26
30
} ) ;
27
31
} ) ;
Original file line number Diff line number Diff line change 1
1
// 69. Sqrt(x)
2
2
// https://leetcode.com/problems/sqrtx/
3
- function mySqrt ( x : number ) : number {
3
+ export default function mySqrt ( x : number ) : number {
4
4
if ( x <= 1 ) return x ;
5
5
6
- let searchRangeStart = 0 ;
7
- let searchRangeEnd = x ;
6
+ let from = 1 ;
7
+ let to = x ;
8
8
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 ;
12
12
13
- if ( divided === middle ) return middle ;
13
+ if ( squareOfMiddle === x ) return middle ;
14
14
15
- if ( middle > divided ) {
16
- searchRangeEnd = middle ;
15
+ if ( squareOfMiddle < x ) {
16
+ from = middle + 1 ;
17
17
} else {
18
- searchRangeStart = middle ;
18
+ to = middle - 1 ;
19
19
}
20
20
}
21
21
22
- return searchRangeStart ;
22
+ return to ;
23
23
}
24
-
25
- export default mySqrt ;
You can’t perform that action at this time.
0 commit comments