Skip to content

Commit e8e3bb9

Browse files
committed
feat: add solutions to lc problem: No.0069. Sqrt(x)
1 parent 54139a7 commit e8e3bb9

File tree

10 files changed

+172
-103
lines changed

10 files changed

+172
-103
lines changed

basic/searching/BinarySearch/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ int binarySearch2(int left, int right) {
3232
## 例题
3333

3434
- [在排序数组中查找元素的第一个和最后一个位置](/solution/0000-0099/0034.Find%20First%20and%20Last%20Position%20of%20Element%20in%20Sorted%20Array/README.md)
35+
- [x 的平方根](/solution/0000-0099/0069.Sqrt%28x%29/README.md)
3536
- [寻找峰值](/solution/0100-0199/0162.Find%20Peak%20Element/README.md)
3637
- [第一个错误的版本](/solution/0200-0299/0278.First%20Bad%20Version/README.md)
3738
- [不动点](/solution/1000-1099/1064.Fixed%20Point/README.md)

basic/searching/BinarySearch/README_EN.md

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ int binarySearch2(int left, int right) {
3030
## Examples
3131

3232
- [Find First and Last Position of Element in Sorted Array](/solution/0000-0099/0034.Find%20First%20and%20Last%20Position%20of%20Element%20in%20Sorted%20Array/README_EN.md)
33+
- [Sqrt(x)](/solution/0000-0099/0069.Sqrt%28x%29/README_EN.md)
3334
- [Find Peak Element](/solution/0100-0199/0162.Find%20Peak%20Element/README_EN.md)
3435
- [First Bad Version](/solution/0200-0299/0278.First%20Bad%20Version/README_EN.md)
3536
- [Fixed Point](/solution/1000-1099/1064.Fixed%20Point/README_EN.md)

solution/0000-0099/0069.Sqrt(x)/README.md

+56-32
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ class Solution:
4242
def mySqrt(self, x: int) -> int:
4343
if x == 0:
4444
return 0
45-
low, high = 1, x
46-
while low < high:
47-
mid = (low + high + 1) >> 1
48-
# mid * mid <= x
45+
left, right = 1, x
46+
while left < right:
47+
mid = (left + right + 1) >> 1
48+
# mid*mid <= x
4949
if x // mid >= mid:
50-
low = mid
50+
left = mid
5151
else:
52-
high = mid - 1
53-
return low
52+
right = mid - 1
53+
return left
5454
```
5555

5656
### **Java**
@@ -63,20 +63,44 @@ class Solution {
6363
if (x == 0) {
6464
return 0;
6565
}
66-
int low = 1, high = x;
67-
while (low < high) {
68-
int mid = (low + high + 1) >>> 1;
66+
int left = 1, right = x;
67+
while (left < right) {
68+
int mid = (left + right + 1) >>> 1;
6969
if (x / mid >= mid) {
70-
low = mid;
70+
// mid*mid <= x
71+
left = mid;
7172
} else {
72-
high = mid - 1;
73+
right = mid - 1;
7374
}
7475
}
75-
return low;
76+
return left;
7677
}
7778
}
7879
```
7980

81+
### **C++**
82+
83+
```cpp
84+
class Solution {
85+
public:
86+
int mySqrt(int x) {
87+
if (x == 0) {
88+
return 0;
89+
}
90+
int left = 1, right = x;
91+
while (left < right) {
92+
int mid = left + ((right - left + 1) >> 1);
93+
if (x / mid >= mid) {
94+
left = mid;
95+
} else {
96+
right = mid - 1;
97+
}
98+
}
99+
return left;
100+
}
101+
};
102+
```
103+
80104
### **JavaScript**
81105
82106
```js
@@ -88,17 +112,17 @@ var mySqrt = function(x) {
88112
if (x == 0) {
89113
return 0;
90114
}
91-
let low = 1;
92-
let high = x;
93-
while (low < high) {
94-
const mid = low + ((high - low + 1) >> 1);
115+
let left = 1;
116+
let right = x;
117+
while (left < right) {
118+
const mid = (left + right + 1) >>> 1;
95119
if (x / mid >= mid) {
96-
low = mid;
120+
left = mid;
97121
} else {
98-
high = mid - 1;
122+
right = mid - 1;
99123
}
100124
}
101-
return low;
125+
return left;
102126
};
103127
```
104128

@@ -109,16 +133,16 @@ func mySqrt(x int) int {
109133
if x == 0 {
110134
return 0
111135
}
112-
low, high := 1, x
113-
for low < high {
114-
mid := low + (high-low+1)>>1
136+
left, right := 1, x
137+
for left < right {
138+
mid := left + (right-left+1)>>1
115139
if x/mid >= mid {
116-
low = mid
140+
left = mid
117141
} else {
118-
high = mid - 1
142+
right = mid - 1
119143
}
120144
}
121-
return low
145+
return left
122146
}
123147
```
124148

@@ -130,20 +154,20 @@ public class Solution {
130154
if (x == 0) {
131155
return 0;
132156
}
133-
int low = 1, high = x;
134-
while (low < high)
157+
int left = 1, right = x;
158+
while (left < right)
135159
{
136-
int mid = low + ((high - low + 1) >> 1);
160+
int mid = left + right + 1 >> 1;
137161
if (x / mid >= mid)
138162
{
139-
low = mid;
163+
left = mid;
140164
}
141165
else
142166
{
143-
high = mid - 1;
167+
right = mid - 1;
144168
}
145169
}
146-
return low;
170+
return left;
147171
}
148172
}
149173
```

solution/0000-0099/0069.Sqrt(x)/README_EN.md

+56-32
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ class Solution:
4242
def mySqrt(self, x: int) -> int:
4343
if x == 0:
4444
return 0
45-
low, high = 1, x
46-
while low < high:
47-
mid = (low + high + 1) >> 1
48-
# mid * mid <= x
45+
left, right = 1, x
46+
while left < right:
47+
mid = (left + right + 1) >> 1
48+
# mid*mid <= x
4949
if x // mid >= mid:
50-
low = mid
50+
left = mid
5151
else:
52-
high = mid - 1
53-
return low
52+
right = mid - 1
53+
return left
5454
```
5555

5656
### **Java**
@@ -61,20 +61,44 @@ class Solution {
6161
if (x == 0) {
6262
return 0;
6363
}
64-
int low = 1, high = x;
65-
while (low < high) {
66-
int mid = (low + high + 1) >>> 1;
64+
int left = 1, right = x;
65+
while (left < right) {
66+
int mid = (left + right + 1) >>> 1;
6767
if (x / mid >= mid) {
68-
low = mid;
68+
// mid*mid <= x
69+
left = mid;
6970
} else {
70-
high = mid - 1;
71+
right = mid - 1;
7172
}
7273
}
73-
return low;
74+
return left;
7475
}
7576
}
7677
```
7778

79+
### **C++**
80+
81+
```cpp
82+
class Solution {
83+
public:
84+
int mySqrt(int x) {
85+
if (x == 0) {
86+
return 0;
87+
}
88+
int left = 1, right = x;
89+
while (left < right) {
90+
int mid = left + ((right - left + 1) >> 1);
91+
if (x / mid >= mid) {
92+
left = mid;
93+
} else {
94+
right = mid - 1;
95+
}
96+
}
97+
return left;
98+
}
99+
};
100+
```
101+
78102
### **JavaScript**
79103
80104
```js
@@ -86,17 +110,17 @@ var mySqrt = function(x) {
86110
if (x == 0) {
87111
return 0;
88112
}
89-
let low = 1;
90-
let high = x;
91-
while (low < high) {
92-
const mid = low + ((high - low + 1) >> 1);
113+
let left = 1;
114+
let right = x;
115+
while (left < right) {
116+
const mid = (left + right + 1) >>> 1;
93117
if (x / mid >= mid) {
94-
low = mid;
118+
left = mid;
95119
} else {
96-
high = mid - 1;
120+
right = mid - 1;
97121
}
98122
}
99-
return low;
123+
return left;
100124
};
101125
```
102126

@@ -107,16 +131,16 @@ func mySqrt(x int) int {
107131
if x == 0 {
108132
return 0
109133
}
110-
low, high := 1, x
111-
for low < high {
112-
mid := low + (high-low+1)>>1
134+
left, right := 1, x
135+
for left < right {
136+
mid := left + (right-left+1)>>1
113137
if x/mid >= mid {
114-
low = mid
138+
left = mid
115139
} else {
116-
high = mid - 1
140+
right = mid - 1
117141
}
118142
}
119-
return low
143+
return left
120144
}
121145
```
122146

@@ -128,20 +152,20 @@ public class Solution {
128152
if (x == 0) {
129153
return 0;
130154
}
131-
int low = 1, high = x;
132-
while (low < high)
155+
int left = 1, right = x;
156+
while (left < right)
133157
{
134-
int mid = low + ((high - low + 1) >> 1);
158+
int mid = left + right + 1 >> 1;
135159
if (x / mid >= mid)
136160
{
137-
low = mid;
161+
left = mid;
138162
}
139163
else
140164
{
141-
high = mid - 1;
165+
right = mid - 1;
142166
}
143167
}
144-
return low;
168+
return left;
145169
}
146170
}
147171
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
int mySqrt(int x) {
4+
if (x == 0) {
5+
return 0;
6+
}
7+
int left = 1, right = x;
8+
while (left < right) {
9+
int mid = left + ((right - left + 1) >> 1);
10+
if (x / mid >= mid) {
11+
left = mid;
12+
} else {
13+
right = mid - 1;
14+
}
15+
}
16+
return left;
17+
}
18+
};

solution/0000-0099/0069.Sqrt(x)/Solution.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ public int MySqrt(int x) {
33
if (x == 0) {
44
return 0;
55
}
6-
int low = 1, high = x;
7-
while (low < high)
6+
int left = 1, right = x;
7+
while (left < right)
88
{
9-
int mid = low + ((high - low + 1) >> 1);
9+
int mid = left + right + 1 >> 1;
1010
if (x / mid >= mid)
1111
{
12-
low = mid;
12+
left = mid;
1313
}
1414
else
1515
{
16-
high = mid - 1;
16+
right = mid - 1;
1717
}
1818
}
19-
return low;
19+
return left;
2020
}
2121
}

solution/0000-0099/0069.Sqrt(x)/Solution.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ func mySqrt(x int) int {
22
if x == 0 {
33
return 0
44
}
5-
low, high := 1, x
6-
for low < high {
7-
mid := low + (high-low+1)>>1
5+
left, right := 1, x
6+
for left < right {
7+
mid := left + (right-left+1)>>1
88
if x/mid >= mid {
9-
low = mid
9+
left = mid
1010
} else {
11-
high = mid - 1
11+
right = mid - 1
1212
}
1313
}
14-
return low
14+
return left
1515
}

0 commit comments

Comments
 (0)