leetcode有效的完全平方數(shù)

給定一個 正整數(shù) num ,編寫一個函數(shù),如果 num 是一個完全平方數(shù),則返回 true ,否則返回 false 。
進階:不要使用任何內置的庫函數(shù),如 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都比較過了,不應該再放在可選區(qū)間!
            elif mid*mid < num:
                low = mid
            else:
                ans = True
                break
            if mid == int((high+low)/2):
                break
        return ans
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容