367. Valid Perfect Square
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Follow up: Do not use any built-in library function such as sqrt
.
Example 1:
Input: num = 16 Output: true
Example 2:
Input: num = 14 Output: false
Constraints:
1 <= num <= 2^31 - 1
Rust Solution
struct Solution;
impl Solution {
fn is_perfect_square(num: i32) -> bool {
let mut r: i64 = num as i64;
let x: i64 = num as i64;
while r * r > x {
r = (r + x / r) / 2;
}
r * r == x
}
}
#[test]
fn test() {
assert_eq!(Solution::is_perfect_square(16), true);
assert_eq!(Solution::is_perfect_square(14), false);
}
Having problems with this solution? Click here to submit an issue on github.