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

猜你喜欢

转载自blog.csdn.net/JerryZengZ/article/details/89787411
今日推荐