Skip to content
本页目录

0367-有效的完全平方数

https://leetcode.cn/problems/valid-perfect-square

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

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

示例 1:

输入:num = 16
输出:true

示例 2:

输入:num = 14
输出:false

提示:

  • 1 <= num <= 2^31 - 1

基本思路

使用二分法,从两端逼近中间,如果发现 mid 平方刚好等于 num 就找到答案,否则越界后就说明没找到

同样需要特别注意 平方的结果 需要用乘法保存,防止数据越界

参考代码

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

Released under the MIT License.