leetcode c++ 367 有效的完全平方数

版权声明:本文未经允许不得转载 https://blog.csdn.net/weixin_43873349/article/details/89501640

leetcode c++ 367 有效的完全平方数

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

说明:不要使用任何内置的库函数,如 sqrt。

示例 1:

输入:16
输出:True

示例 2:

输入:14
输出:False

    开始时想的很简单,直接从头遍历到给定的数,穷举,看是否有数的平方等于给定的数,如果有就返回true,没有就返回false。运行报错,int改为long后通过,但是内存占用很大。

    进行改进,看到其他文章用了二分法就尝试了一下,内存击败了93%用户。

    思路:将正常的二分法应用于此,循环,每次取中间值,如果中间值的平方==给定的数,那么返回true。否则缩小范围继续二分。循环结束如未找到平方等于给定数的数,那么返回false。

    下面贴上代码:

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

猜你喜欢

转载自blog.csdn.net/weixin_43873349/article/details/89501640