LeetCode刷題記錄——第367題(有效的完全平方數)
阿新 • • 發佈:2019-01-13
題目描述
給定一個正整數 num,編寫一個函式,如果 num 是一個完全平方數,則返回 True,否則返回 False。
說明:不要使用任何內建的庫函式,如 sqrt。
示例 1:
輸入:16
輸出:True
示例 2:
輸入:14
輸出:False
思路分析
- 回憶我們自己尋找平方根的過程,猜一個數後求其平方,如果大於要求的數則往小的數找;小於要求的數則往大了的數找,這是典型的二分法的思想。
- 利用二分查詢法,實現。很關鍵,相當於練習二分法啦。
程式碼示例
class Solution(object ):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
start = 0
end = num
while start <= end:
mid = (start + end) // 2
test = mid ** 2
if test < num:
start = mid + 1
elif test == num:
return True
else:
end = mid - 1
return False