LeetCode 69 – Python 3 (Week 5 – 10)

Solution 1 is straightforward. Solution 2 uses binary search. Solution 3 uses Newton’s Iteration.

Solution 1

class Solution:
    def mySqrt(self, x: int) -> int:
        i = 0
        
        while x >= i*i:
            i += 1
            
        return i - 1

Time complexity is O(n). Space complexity is O(1).

Solution 2

class Solution:
    def mySqrt(self, x: int) -> int:
        if x < 2: return x
        left, right = 1, x // 2
        
        while left <= right:
            mid = left + (right - left) // 2
            if x < mid*mid:
                right = mid - 1
            else: left = mid + 1
                
        return left - 1
                

Time complexity is O(logn). Space complexity is O(1).

Solution 3

class Solution:
     def mySqrt(self, x: int) -> int:
         return int(x**0.5)

Time complexity is O(1). Space complexity is O(1).

Solution 4

class Solution:
    def mySqrt(self, x: int) -> int:
        x_previous = x
        x_current = x / 2
        precision = 0.1
        while abs(x_previous - x_current) > precision:
            x_previous = x_current
            x_current = (1/2) * (x_current + x/x_current)
            
        return int(x_current)

Time complexity is O(logn). Space complexity is O(1).

Leave a comment

Design a site like this with WordPress.com
Get started