LeetCode-Day47 (C#) 367. 有效的完全平方数

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

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

示例 1:

输入:num = 16
输出:true

示例 2:

输入:num = 14
输出:false

方法一:二分查找
若 num < 2,返回 true。
设置左边界为 2,右边界为 num/2。
当 left <= right:
令 x = (left + right) / 2 作为一个猜测,计算 guess_squared = x * x 与 num 做比较:
如果 guess_squared == num,则 num 是一个完全平方数,返回 true。
如果 guess_squared > num ,设置右边界 right = x-1。
否则设置左边界为 left = x+1。
如果在循环体内没有找到,则说明 num 不是完全平方数,返回 false。

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

你可能感兴趣的:(LeetCode-Day47 (C#) 367. 有效的完全平方数)