[][src]Function leetcode_for_rust::cd0367_valid_perfect_square::is_perfect_square

pub fn is_perfect_square(num: i32) -> bool

Solutions

Approach 1: Binary Search

  • Time complexity: log(n)

  • Space complexity: log(n)

  • Runtime: 0 ms

  • Memory: 2.4 MB

impl Solution {
    pub fn is_perfect_square(num: i32) -> bool {
        if num == 0 { return false; }

        let num = num as usize;
        let mut left = 1 as usize;
        let mut right = num;

        while left <= right {
            let mid = (right - left) / 2 as usize + left;
            if mid * mid == num { return true; }
            if mid * mid > num { right = mid - 1 as usize; } else { left = mid + 1 as usize; }
        }

        false
    }
}