力扣367.有效的完全平方数

一.题目                                                                                                                                            

 二.思路: 

完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,149 和 16 都是完全平方数,而 3 和 11 不是。

可以使用二分法,令low=0;high=传入的num,将其折半赋予mid

因为它是某个整数的平方,而这个数的范围肯定不会超过num的一半

然后写入判定条件,因为定义的都是int型变量,所以在判定num/mid==mid后还要附加num%mid==0,两条件同时满足,才为完全平方数,同时对于num%mid!=0的情况也要说明,因为int都是向下取整,所以若余数不等于0,令low+1,与mid<(num/mid)时一致。对于mid>(num/mid),则令high-1即可。

然后在low和high之间一直实行折半查找,最终找到符合的数字

三.代码

bool isPerfectSquare(int num){
    int low=0;
    int high=num;
    int mid;
    if(num==1){
        return true;
    }
    while(low<=high){
        mid=(high+low)/2;
        if(num/mid==mid&&num%mid==0){
            return true;
        }else if(num/mid==mid&&num%mid!=0){
            low=mid+1;
        }else if(mid<(num/mid)){
            low=mid+1;
        }else if(mid>(num/mid)){
            high=mid-1;
        }
    }
    return false;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值