""" 0069.1 - Sqrt(x) - Solution 1 - Binary Search """
#####################################################################################
# Imports
#####################################################################################
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def mySqrt(self, x: int) -> int:
"""Sqrt(x) Function"""
if x < 2:
return x
left, right = 1, x // 2
result = 0
while left <= right:
mid = left + (right - left) // 2
square = mid * mid
if square == x:
return mid
elif square < x:
result = mid
left = mid + 1
else:
right = mid - 1
return result
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().mySqrt(4)) # 2
print(Solution().mySqrt(8)) # 2
print(Solution().mySqrt(0)) # 0
print(Solution().mySqrt(1)) # 1
print(Solution().mySqrt(16)) # 4
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()
""" 0069.2 - Sqrt(x) - Solution 2 - Linear Search """
#####################################################################################
# Imports
#####################################################################################
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def mySqrt(self, x: int) -> int:
"""Sqrt(x) Function"""
i = 0
while (i + 1) * (i + 1) <= x:
i += 1
return i
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().mySqrt(4)) # 2
print(Solution().mySqrt(8)) # 2
print(Solution().mySqrt(0)) # 0
print(Solution().mySqrt(1)) # 1
print(Solution().mySqrt(16)) # 4
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()