Skip to content

Commit 9eed79a

Browse files
Add C++ implementation
Signed-off-by: begeekmyfriend <[email protected]>
1 parent e52ea62 commit 9eed79a

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

0069_sqrt/sqrt.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -51,26 +51,26 @@ static double mySqrt(double n)
5151
}
5252
#endif
5353

54-
static int mySqrt(int x)
54+
int mySqrt(int x)
5555
{
5656
if (x == 0) {
5757
return 0;
5858
}
5959

60-
unsigned int left = 1;
61-
unsigned int right = (unsigned int) x;
62-
unsigned int mid = left + (right - left) / 2;
60+
unsigned int lo = 1;
61+
unsigned int hi = (unsigned int) x;
62+
unsigned int mid = lo + (hi - lo) / 2;
6363
for (; ;) {
6464
if (mid > x/mid) {
65-
right = mid;
65+
hi = mid;
6666
} else {
6767
if (mid + 1 > x/(mid + 1)) {
6868
break;
6969
} else {
70-
left = mid;
70+
lo = mid;
7171
}
7272
}
73-
mid = left + (right - left) / 2;
73+
mid = lo + (hi - lo) / 2;
7474
}
7575

7676
return mid;

0069_sqrt/sqrt.cc

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
class Solution {
6+
public:
7+
int mySqrt(int x) {
8+
if (x == 0) {
9+
return 0;
10+
}
11+
12+
unsigned int lo = 1, hi = x;
13+
unsigned int mid = (lo + hi) / 2;
14+
for (; ;) {
15+
if (mid > x / mid) {
16+
hi = mid;
17+
} else {
18+
if (mid + 1 > x / (mid + 1)) {
19+
break;
20+
} else {
21+
lo = mid;
22+
}
23+
}
24+
mid = (lo + hi) / 2;
25+
}
26+
27+
return mid;
28+
}
29+
};

0 commit comments

Comments
 (0)