File tree 10 files changed +172
-103
lines changed
basic/searching/BinarySearch
solution/0000-0099/0069.Sqrt(x)
10 files changed +172
-103
lines changed Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ int binarySearch2(int left, int right) {
32
32
## 例题
33
33
34
34
- [ 在排序数组中查找元素的第一个和最后一个位置] ( /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 )
35
36
- [ 寻找峰值] ( /solution/0100-0199/0162.Find%20Peak%20Element/README.md )
36
37
- [ 第一个错误的版本] ( /solution/0200-0299/0278.First%20Bad%20Version/README.md )
37
38
- [ 不动点] ( /solution/1000-1099/1064.Fixed%20Point/README.md )
Original file line number Diff line number Diff line change @@ -30,6 +30,7 @@ int binarySearch2(int left, int right) {
30
30
## Examples
31
31
32
32
- [ 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 )
33
34
- [ Find Peak Element] ( /solution/0100-0199/0162.Find%20Peak%20Element/README_EN.md )
34
35
- [ First Bad Version] ( /solution/0200-0299/0278.First%20Bad%20Version/README_EN.md )
35
36
- [ Fixed Point] ( /solution/1000-1099/1064.Fixed%20Point/README_EN.md )
Original file line number Diff line number Diff line change @@ -42,15 +42,15 @@ class Solution:
42
42
def mySqrt (self , x : int ) -> int :
43
43
if x == 0 :
44
44
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
49
49
if x // mid >= mid:
50
- low = mid
50
+ left = mid
51
51
else :
52
- high = mid - 1
53
- return low
52
+ right = mid - 1
53
+ return left
54
54
```
55
55
56
56
### ** Java**
@@ -63,20 +63,44 @@ class Solution {
63
63
if (x == 0 ) {
64
64
return 0 ;
65
65
}
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 ;
69
69
if (x / mid >= mid) {
70
- low = mid;
70
+ // mid*mid <= x
71
+ left = mid;
71
72
} else {
72
- high = mid - 1 ;
73
+ right = mid - 1 ;
73
74
}
74
75
}
75
- return low ;
76
+ return left ;
76
77
}
77
78
}
78
79
```
79
80
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
+
80
104
### **JavaScript**
81
105
82
106
```js
@@ -88,17 +112,17 @@ var mySqrt = function(x) {
88
112
if (x == 0) {
89
113
return 0;
90
114
}
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 ;
95
119
if (x / mid >= mid) {
96
- low = mid;
120
+ left = mid;
97
121
} else {
98
- high = mid - 1 ;
122
+ right = mid - 1;
99
123
}
100
124
}
101
- return low ;
125
+ return left ;
102
126
};
103
127
```
104
128
@@ -109,16 +133,16 @@ func mySqrt(x int) int {
109
133
if x == 0 {
110
134
return 0
111
135
}
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
115
139
if x/mid >= mid {
116
- low = mid
140
+ left = mid
117
141
} else {
118
- high = mid - 1
142
+ right = mid - 1
119
143
}
120
144
}
121
- return low
145
+ return left
122
146
}
123
147
```
124
148
@@ -130,20 +154,20 @@ public class Solution {
130
154
if (x == 0 ) {
131
155
return 0 ;
132
156
}
133
- int low = 1 , high = x ;
134
- while (low < high )
157
+ int left = 1 , right = x ;
158
+ while (left < right )
135
159
{
136
- int mid = low + (( high - low + 1 ) >> 1 ) ;
160
+ int mid = left + right + 1 >> 1 ;
137
161
if (x / mid >= mid )
138
162
{
139
- low = mid ;
163
+ left = mid ;
140
164
}
141
165
else
142
166
{
143
- high = mid - 1 ;
167
+ right = mid - 1 ;
144
168
}
145
169
}
146
- return low ;
170
+ return left ;
147
171
}
148
172
}
149
173
```
Original file line number Diff line number Diff line change @@ -42,15 +42,15 @@ class Solution:
42
42
def mySqrt (self , x : int ) -> int :
43
43
if x == 0 :
44
44
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
49
49
if x // mid >= mid:
50
- low = mid
50
+ left = mid
51
51
else :
52
- high = mid - 1
53
- return low
52
+ right = mid - 1
53
+ return left
54
54
```
55
55
56
56
### ** Java**
@@ -61,20 +61,44 @@ class Solution {
61
61
if (x == 0 ) {
62
62
return 0 ;
63
63
}
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 ;
67
67
if (x / mid >= mid) {
68
- low = mid;
68
+ // mid*mid <= x
69
+ left = mid;
69
70
} else {
70
- high = mid - 1 ;
71
+ right = mid - 1 ;
71
72
}
72
73
}
73
- return low ;
74
+ return left ;
74
75
}
75
76
}
76
77
```
77
78
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
+
78
102
### **JavaScript**
79
103
80
104
```js
@@ -86,17 +110,17 @@ var mySqrt = function(x) {
86
110
if (x == 0) {
87
111
return 0;
88
112
}
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 ;
93
117
if (x / mid >= mid) {
94
- low = mid;
118
+ left = mid;
95
119
} else {
96
- high = mid - 1 ;
120
+ right = mid - 1;
97
121
}
98
122
}
99
- return low ;
123
+ return left ;
100
124
};
101
125
```
102
126
@@ -107,16 +131,16 @@ func mySqrt(x int) int {
107
131
if x == 0 {
108
132
return 0
109
133
}
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
113
137
if x/mid >= mid {
114
- low = mid
138
+ left = mid
115
139
} else {
116
- high = mid - 1
140
+ right = mid - 1
117
141
}
118
142
}
119
- return low
143
+ return left
120
144
}
121
145
```
122
146
@@ -128,20 +152,20 @@ public class Solution {
128
152
if (x == 0 ) {
129
153
return 0 ;
130
154
}
131
- int low = 1 , high = x ;
132
- while (low < high )
155
+ int left = 1 , right = x ;
156
+ while (left < right )
133
157
{
134
- int mid = low + (( high - low + 1 ) >> 1 ) ;
158
+ int mid = left + right + 1 >> 1 ;
135
159
if (x / mid >= mid )
136
160
{
137
- low = mid ;
161
+ left = mid ;
138
162
}
139
163
else
140
164
{
141
- high = mid - 1 ;
165
+ right = mid - 1 ;
142
166
}
143
167
}
144
- return low ;
168
+ return left ;
145
169
}
146
170
}
147
171
```
Original file line number Diff line number Diff line change
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
+ };
Original file line number Diff line number Diff line change @@ -3,19 +3,19 @@ public int MySqrt(int x) {
3
3
if ( x == 0 ) {
4
4
return 0 ;
5
5
}
6
- int low = 1 , high = x ;
7
- while ( low < high )
6
+ int left = 1 , right = x ;
7
+ while ( left < right )
8
8
{
9
- int mid = low + ( ( high - low + 1 ) >> 1 ) ;
9
+ int mid = left + right + 1 >> 1 ;
10
10
if ( x / mid >= mid )
11
11
{
12
- low = mid ;
12
+ left = mid ;
13
13
}
14
14
else
15
15
{
16
- high = mid - 1 ;
16
+ right = mid - 1 ;
17
17
}
18
18
}
19
- return low ;
19
+ return left ;
20
20
}
21
21
}
Original file line number Diff line number Diff line change @@ -2,14 +2,14 @@ func mySqrt(x int) int {
2
2
if x == 0 {
3
3
return 0
4
4
}
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
8
8
if x / mid >= mid {
9
- low = mid
9
+ left = mid
10
10
} else {
11
- high = mid - 1
11
+ right = mid - 1
12
12
}
13
13
}
14
- return low
14
+ return left
15
15
}
You can’t perform that action at this time.
0 commit comments