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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容