File tree 17 files changed +656
-86
lines changed
0200-0299/0278.First Bad Version
0300-0399/0374.Guess Number Higher or Lower
17 files changed +656
-86
lines changed Original file line number Diff line number Diff line change 38
38
<!-- 这里可写当前语言的特殊实现逻辑 -->
39
39
40
40
``` 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
42
54
```
43
55
44
56
### ** Java**
45
57
46
58
<!-- 这里可写当前语言的特殊实现逻辑 -->
47
59
48
60
``` 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
+ ```
49
124
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
+ }
50
149
```
51
150
52
151
### ** ...**
Original file line number Diff line number Diff line change 38
38
### ** Python3**
39
39
40
40
``` 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
42
54
```
43
55
44
56
### ** Java**
45
57
46
58
``` 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
+ ```
47
122
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
+ }
48
147
```
49
148
50
149
### ** ...**
Original file line number Diff line number Diff line change 1
1
public class Solution {
2
2
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 )
6
8
{
7
- var mid = ( l + r ) / 2 ;
8
- if ( mid * mid <= x )
9
+ int mid = low + ( ( high - low + 1 ) >> 1 ) ;
10
+ if ( x / mid >= mid )
9
11
{
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
24
15
{
25
- r = mid ;
16
+ high = mid - 1 ;
26
17
}
27
18
}
28
- return ( int ) l ;
19
+ return low ;
29
20
}
30
21
}
Original file line number Diff line number Diff line change 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
-
9
1
func mySqrt (x int ) int {
10
- if x == 0 || x == 1 {
11
- return x
2
+ if x == 0 {
3
+ return 0
12
4
}
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
22
10
} else {
23
- r = m
11
+ high = mid - 1
24
12
}
25
- m = (l + r ) / 2
26
13
}
27
- return m
14
+ return low
28
15
}
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
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 ;
7
16
}
8
17
}
Original file line number Diff line number Diff line change 2
2
* @param {number } x
3
3
* @return {number }
4
4
*/
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 ;
16
8
}
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
+ } ;
Original file line number Diff line number Diff line change 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 :
5
3
if x == 0 :
6
4
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
14
11
else :
15
- if (mid + 1 ) * (mid + 1 ) > x :
16
- return mid
17
- left = mid + 1
18
-
12
+ high = mid - 1
13
+ return low
You can’t perform that action at this time.
0 commit comments