367. Valid Perfect Square

Given a positive integer num, write a function which returns True if num is a perfect square else False.

和之前的开方的写法类似 都是二分查找 但是要注意这里 有舍入 num/mid可能会出现满足条件但不是平方数的情况,需要在里面再进行一次判断。

class Solution {
    public boolean isPerfectSquare(int num) {
        int hi = num ;
        int lo = 1;
        while(lo<=hi)
        {
            int mid = lo+(hi-lo)/2;
            if(mid==num/mid)
            {
                if(num%mid==0)
                    return true;
                return false;
            }
            else if (mid<num/mid)
                lo=mid+1;
            else
                hi=mid-1;
        }
        return false;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容