LeetCode探索之旅(86)-367valid perfect square

继续刷LeetCode,第367题,判断一个整数是否可以开平方根。

分析:
判断一个数是否可以开平方,那么就是从1开始遍历,判断它的平方是否等于该数,这就变成了一个有序查找,如何快速找到这个平方根的数。最好的办法就是利用二分查找。另外Python提供了可以求根号的方式,可以直接求出结果是否满足。

问题:
1、对于这样的题目,时间开销是需要考虑的问题,如何快速查找;
2、对于大数的情况,要考虑进去;
3、利用Python中pow求平方的功能。

附上C++代码:

class Solution {
public:
    bool isPerfectSquare(int num) {
        long long l=1;
        long long r=num;
        while(l<=r)
        {
            long long mid=(l+r)/2;
            if(mid*mid==num)
                return true;
            else if(mid*mid<num)
                l=mid+1;
            else
                r=mid-1;                
        }
        return false;
    }
};

附上Python代码1:

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        low,high=1,num
        while low<=high:
            mid=(low+high)//2
            if mid*mid==num:
                return True
            elif mid*mid<num:
                low=mid+1
            else:
                high=mid-1
        return False

附上Python代码2:

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        sq=int(pow(num,0.5))
        if sq*sq==num:
            return True
        else:
            return False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值