class Solution:
def mySqrt(self, x: int) -> int:
# edge case
if x == 1:
return 1
#regular case
start = 1
end = x
while start+1 < end:
mid = start + (end-start)//2
result = mid*mid
if x == result:
return mid
if result < x:
start = mid
else:
end = mid
if start*start <= x:
return start
else:
return end