LeetCode 367、有效的完全平方数

LeetCode 367、有效的完全平方数,第1张

367、有效的完全平方数

1)题目描述

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

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

示例 1:

输入:num = 16
输出:true

示例 2:

输入:num = 14
输出:false

提示:

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

2)分析

二分。

需要注意:

  • 计算mid的时候为了防止溢出,使用mid=left+(right-left)/2
  • 在判断平方是否等与所给的数字的时候,使用mid==num/mid&&num%mid==0,防止溢出,并且避免非完全平方数存在余数误判。

3)C++代码

class Solution {
public:
    bool isPerfectSquare(int num) {
        int left=1;
        int right=num;
        while(left<=right){
            int mid=left+(right-left)/2;
            if(mid==num/mid&&num%mid==0)
                return true;
            else if(mid>num/mid)
                right=mid-1;
            else
                left=mid+1;
        }
        return false;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/673741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存