-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSquareRoot.kt
36 lines (32 loc) · 856 Bytes
/
SquareRoot.kt
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
package problems
class SquareRoot {
//binary search
fun mySqrt(x: Int): Int {
if (x < 2) return x
var left: Long = 0
var right: Long = x / 2L
while (left <= right) {
val mid = (left + right) / 2
if (x >= (mid * mid) && x < ((mid + 1) * (mid + 1))) {
return mid.toInt()
} else if (x < (mid * mid)) {
//x < (mid * mid)
right = mid - 1
} else {
// x >= ((mid + 1) * (mid + 1))
left = mid + 1
}
}
return -1
}
//brute
fun mySqrtBrute(x: Int): Int {
var lhs: Long = 0
while (true) {
if (x >= (lhs * lhs) && x < ((lhs + 1) * (lhs + 1))) {
return lhs.toInt()
}
lhs++
}
}
}