题目地址

1. 思路

这个题就用二分查找的思想,比LeetCode69x的平方根要简单一些,那个还要处理开平方不是整数的情况,这个直接就按左闭右闭,middle的平方是num就返回true,否则继续迭代二分直到找到middle的平方是num的情况返回true,或者找不到跳出循环返回false.

2. 代码

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

结果也是顺利通过
【代码随想录刷题记录】LeetCode367有效的完全平方数-LMLPHP

04-24 21:38