Skip to content

Commit 9db5b2f

Browse files
committed
feat: update solutions to lc problems: No.0069,0278,0374
1 parent 38201f5 commit 9db5b2f

File tree

17 files changed

+656
-86
lines changed

17 files changed

+656
-86
lines changed

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

+100-1
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,114 @@
3838
<!-- 这里可写当前语言的特殊实现逻辑 -->
3939

4040
```python
41-
41+
class Solution:
42+
def mySqrt(self, x: int) -> int:
43+
if x == 0:
44+
return 0
45+
low, high = 1, x
46+
while low < high:
47+
mid = (low + high + 1) >> 1
48+
# mid * mid <= x
49+
if x // mid >= mid:
50+
low = mid
51+
else:
52+
high = mid - 1
53+
return low
4254
```
4355

4456
### **Java**
4557

4658
<!-- 这里可写当前语言的特殊实现逻辑 -->
4759

4860
```java
61+
class Solution {
62+
public int mySqrt(int x) {
63+
if (x == 0) {
64+
return 0;
65+
}
66+
int low = 1, high = x;
67+
while (low < high) {
68+
int mid = (low + high + 1) >>> 1;
69+
if (x / mid >= mid) {
70+
low = mid;
71+
} else {
72+
high = mid - 1;
73+
}
74+
}
75+
return low;
76+
}
77+
}
78+
```
79+
80+
### **JavaScript**
81+
82+
```js
83+
/**
84+
* @param {number} x
85+
* @return {number}
86+
*/
87+
var mySqrt = function(x) {
88+
if (x == 0) {
89+
return 0;
90+
}
91+
let low = 1;
92+
let high = x;
93+
while (low < high) {
94+
const mid = low + ((high - low + 1) >> 1);
95+
if (x / mid >= mid) {
96+
low = mid;
97+
} else {
98+
high = mid - 1;
99+
}
100+
}
101+
return low;
102+
};
103+
```
104+
105+
### **Go**
106+
107+
```go
108+
func mySqrt(x int) int {
109+
if x == 0 {
110+
return 0
111+
}
112+
low, high := 1, x
113+
for low < high {
114+
mid := low + (high-low+1)>>1
115+
if x/mid >= mid {
116+
low = mid
117+
} else {
118+
high = mid - 1
119+
}
120+
}
121+
return low
122+
}
123+
```
49124

125+
### **C#**
126+
127+
```cs
128+
public class Solution {
129+
public int MySqrt(int x) {
130+
if (x == 0) {
131+
return 0;
132+
}
133+
int low = 1, high = x;
134+
while (low < high)
135+
{
136+
int mid = low + ((high - low + 1) >> 1);
137+
if (x / mid >= mid)
138+
{
139+
low = mid;
140+
}
141+
else
142+
{
143+
high = mid - 1;
144+
}
145+
}
146+
return low;
147+
}
148+
}
50149
```
51150

52151
### **...**

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

+100-1
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,112 @@
3838
### **Python3**
3939

4040
```python
41-
41+
class Solution:
42+
def mySqrt(self, x: int) -> int:
43+
if x == 0:
44+
return 0
45+
low, high = 1, x
46+
while low < high:
47+
mid = (low + high + 1) >> 1
48+
# mid * mid <= x
49+
if x // mid >= mid:
50+
low = mid
51+
else:
52+
high = mid - 1
53+
return low
4254
```
4355

4456
### **Java**
4557

4658
```java
59+
class Solution {
60+
public int mySqrt(int x) {
61+
if (x == 0) {
62+
return 0;
63+
}
64+
int low = 1, high = x;
65+
while (low < high) {
66+
int mid = (low + high + 1) >>> 1;
67+
if (x / mid >= mid) {
68+
low = mid;
69+
} else {
70+
high = mid - 1;
71+
}
72+
}
73+
return low;
74+
}
75+
}
76+
```
77+
78+
### **JavaScript**
79+
80+
```js
81+
/**
82+
* @param {number} x
83+
* @return {number}
84+
*/
85+
var mySqrt = function(x) {
86+
if (x == 0) {
87+
return 0;
88+
}
89+
let low = 1;
90+
let high = x;
91+
while (low < high) {
92+
const mid = low + ((high - low + 1) >> 1);
93+
if (x / mid >= mid) {
94+
low = mid;
95+
} else {
96+
high = mid - 1;
97+
}
98+
}
99+
return low;
100+
};
101+
```
102+
103+
### **Go**
104+
105+
```go
106+
func mySqrt(x int) int {
107+
if x == 0 {
108+
return 0
109+
}
110+
low, high := 1, x
111+
for low < high {
112+
mid := low + (high-low+1)>>1
113+
if x/mid >= mid {
114+
low = mid
115+
} else {
116+
high = mid - 1
117+
}
118+
}
119+
return low
120+
}
121+
```
47122

123+
### **C#**
124+
125+
```cs
126+
public class Solution {
127+
public int MySqrt(int x) {
128+
if (x == 0) {
129+
return 0;
130+
}
131+
int low = 1, high = x;
132+
while (low < high)
133+
{
134+
int mid = low + ((high - low + 1) >> 1);
135+
if (x / mid >= mid)
136+
{
137+
low = mid;
138+
}
139+
else
140+
{
141+
high = mid - 1;
142+
}
143+
}
144+
return low;
145+
}
146+
}
48147
```
49148

50149
### **...**
+12-21
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,21 @@
11
public class Solution {
22
public int MySqrt(int x) {
3-
long l = 0;
4-
long r = x;
5-
while (l < r)
3+
if (x == 0) {
4+
return 0;
5+
}
6+
int low = 1, high = x;
7+
while (low < high)
68
{
7-
var mid = (l + r) / 2;
8-
if (mid * mid <= x)
9+
int mid = low + ((high - low + 1) >> 1);
10+
if (x / mid >= mid)
911
{
10-
l = mid;
11-
if (l == mid)
12-
{
13-
if (r * r <= x)
14-
{
15-
l = r;
16-
}
17-
else
18-
{
19-
--r;
20-
}
21-
}
22-
}
23-
else
12+
low = mid;
13+
}
14+
else
2415
{
25-
r = mid;
16+
high = mid - 1;
2617
}
2718
}
28-
return (int) l;
19+
return low;
2920
}
3021
}
+9-22
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,15 @@
1-
/**
2-
* @lc app=leetcode.cn id=69 lang=golang
3-
* Accepted
4-
* 1017/1017 cases passed (0 ms)
5-
* Your runtime beats 100 % of golang submissions
6-
* Your memory usage beats 25.49 % of golang submissions (2.2 MB)
7-
*/
8-
91
func mySqrt(x int) int {
10-
if x == 0 || x == 1 {
11-
return x
2+
if x == 0 {
3+
return 0
124
}
13-
l, r, t := 1, x, 0
14-
m := (l + r) / 2
15-
for l != m {
16-
t = m * m
17-
if t == x {
18-
return m
19-
}
20-
if t < x {
21-
l = m
5+
low, high := 1, x
6+
for low < high {
7+
mid := low + (high-low+1)>>1
8+
if x/mid >= mid {
9+
low = mid
2210
} else {
23-
r = m
11+
high = mid - 1
2412
}
25-
m = (l + r) / 2
2613
}
27-
return m
14+
return low
2815
}
+13-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
class Solution {
22
public int mySqrt(int x) {
3-
if(x==0)return 0;
4-
long i=x;
5-
while(i>x/i) i = (i + x / i) / 2;
6-
return (int)i;
3+
if (x == 0) {
4+
return 0;
5+
}
6+
int low = 1, high = x;
7+
while (low < high) {
8+
int mid = (low + high + 1) >>> 1;
9+
if (x / mid >= mid) {
10+
low = mid;
11+
} else {
12+
high = mid - 1;
13+
}
14+
}
15+
return low;
716
}
817
}

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

+15-13
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22
* @param {number} x
33
* @return {number}
44
*/
5-
var mySqrt = function (x) {
6-
var left = 1;
7-
var right = x;
8-
var middle = Math.floor((left + right) / 2);
9-
while (middle !== left) {
10-
if (middle * middle <= x) {
11-
left = middle;
12-
} else {
13-
right = middle;
14-
}
15-
middle = Math.floor((left + right) / 2);
5+
var mySqrt = function(x) {
6+
if (x == 0) {
7+
return 0;
168
}
17-
return middle;
18-
};
9+
let low = 1;
10+
let high = x;
11+
while (low < high) {
12+
const mid = low + ((high - low + 1) >> 1);
13+
if (x / mid >= mid) {
14+
low = mid;
15+
} else {
16+
high = mid - 1;
17+
}
18+
}
19+
return low;
20+
};
+10-15
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
# binary search [python2] - 40ms
2-
3-
class Solution(object):
4-
def mySqrt(self, x):
1+
class Solution:
2+
def mySqrt(self, x: int) -> int:
53
if x == 0:
64
return 0
7-
8-
left = 0
9-
right = x
10-
while True:
11-
mid = left + (right-left)/2
12-
if (mid * mid > x):
13-
right = mid - 1
5+
low, high = 1, x
6+
while low < high:
7+
mid = (low + high + 1) >> 1
8+
# mid * mid <= x
9+
if x // mid >= mid:
10+
low = mid
1411
else:
15-
if (mid+1) * (mid+1) > x:
16-
return mid
17-
left = mid + 1
18-
12+
high = mid - 1
13+
return low

0 commit comments

Comments
 (0)