給定一個 正整數 num ,編寫一個函數,如果 num 是一個完全平方數,則返回 true ,否則返回 false 。
進階:不要 使用任何內置的庫函數,如 sqrt 。
示例 1:
輸入:num = 16
輸出:true
(1)方法一
利用 ( n + 1 ) 2 − n 2 = 2 n + 1 (n+1)^2 - n^2 = 2n+1 (n+1)2−n2=2n+1,距離4 = 1+3,9 = 1+3+5,16 = 1+3+5+7,反過來,判斷是一個數是不是平方數,逐個減去奇數,如果最後等於0,就是平方數
(2)方法二
利用暴力求解,二分的思想去減少暴力求解的次數。
(1)方法一
class Solution:
def isPerfectSquare(self, num: int) -> bool:
i = 1
while num>0:
num -=i
i +=2
if num==0:
return True
else:
return False
(2)方法二
left ,right = 0,num
index = 0
while left <=right:
mid = (left+right)//2
if mid*mid<=num:
index = mid
left = mid+1
else:
right = mid-1
if index*index ==num:
return True
else:
return False
First, lets analyze the sample
Hello, Hello, my name is Dream