367.有效的完全平方数

题目链接

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。

进阶:不要 使用任何内置的库函数,如 sqrt 。

示例1:

  1. 输入:num = 16
  2. 输出:true

示例2:

输入:num = 14
输出:false

提示:

  • 1 <= num <= 231 - 1

二分查找

class Solution {
    public boolean isPerfectSquare(int num) {
        int left = 1;
        int right = num;
        int mid = left + (right - left) / 2;
        while(left <= right){
            if((long)mid * mid == num){
                return true;
            }else if((long)mid * mid < num){
                left = mid + 1;
            }else{
                right = mid -1;
            }
            mid = left + (right - left) / 2;
        }
        return false;
    }
}

乘法可能会越界,强转一下

内置库函数

class Solution {
    public boolean isPerfectSquare(int num) {
        int x = (int) Math.sqrt(num);
        return x * x == num;
    }
}

牛顿迭代法