【Leetcode每日一题】二分查找 - 有效的完全平方数(难度⭐)(19)

1. 题目解析

Leetcode链接:367. 有效的完全平方数

这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。

核心在于判断给定的整数是否可以开方成两个整数相乘,可以就返回false,反之返回true。


2. 算法原理

为了判断一个正整数num是否为完全平方数,我们可以采用二分查找的方法。算法思路如下:

  1. 初始化左边界left为1,右边界rightnum
  2. 进入循环,当左边界小于等于右边界时执行以下步骤:
    a. 计算中间值mid,即left + (right - left) / 2
    b. 计算mid的平方,即mid * mid
    c. 如果mid的平方等于num,则num是完全平方数,返回true
    d. 如果mid的平方小于num,则更新左边界leftmid + 1
    e. 如果mid的平方大于num,则更新右边界rightmid - 1
  3. 如果循环结束后仍未找到完全平方数,则num不是完全平方数,返回false

3. 代码编写

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

The Last

嗯,就是这样啦,文章到这里就结束啦,真心感谢你花时间来读。

觉得有点收获的话,不妨给我点个吧!

如果发现文章有啥漏洞或错误的地方,欢迎私信我或者在评论里提醒一声~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天进步亿丢丢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值