/
Solution.java
executable file
·53 lines (40 loc) · 1.02 KB
/
Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Solution {
public int mySqrt(int x) {
int l = 0, r = x;
while(l <= r){
long mid = (l + (r-l)/2);
if(mid * mid > x) r = (int)mid-1;
else if(mid*mid < x) l = (int)mid+1;
else return (int)mid;
}
return r;
}
}
public class Solution {
public int sqrt(int x) {
if(x < 0) return -1;
if(x == 0) return 0;
int s = 0;
int e = x;
while(s < e){
int m = (e - s) / 2 + s;
int m1 = x / (m + 1);
int m2 = x / (m + 1 + 1);
if(m + 1 == m1){
return m + 1;
}
if(m + 1 + 1 == m2){
return m + 1 + 1;
}
if(m + 1 < m1 && m2 < m + 1 + 1){
return m + 1;
}
if(m1 < m + 1){
e = m;
}else{
s = m + 1;
}
}
throw new RuntimeException();
}
}