leetcode有效的完全平方数

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要使用任何内置的库函数,如 sqrt 。

# 官方解答
class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        left, right = 0, num
        while left <= right: # 左指针小于等于右指针
            mid = (left + right) // 2 
            square = mid * mid
            if square < num:
                left = mid + 1  #已经比较过mid*mid和num之间的大小关系了,因此从mid+1开始
            elif square > num:
                right = mid - 1 #已经比较过mid*mid和num的大小关系,right从mid-1开始
            else:
                return True
        return False

if __name__ == '__main__':
    num = 1
    print(Solution.isPerfectSquare(Solution, num))
# 我的题解
class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        if num == 1:
            return True
        ans = False
        low, high = 0, num
        while high > low:  # 不严谨,low = high时,也可以
            mid = int((high+low)/2)
            if mid*mid > num:
                high = mid  # mid都比较过了,不应该再放在可选区间!
            elif mid*mid < num:
                low = mid
            else:
                ans = True
                break
            if mid == int((high+low)/2):
                break
        return ans
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容