iT邦幫忙

0

leetcode with python:367. Valid Perfect Square

  • 分享至 

  • xImage
  •  

題目:

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

Follow up: Do not use any built-in library function such as sqrt.

給定一數,判斷它是否是完全平方數,過程不能使用開平方根的內建函數

這題還蠻像69.
透過二分搜去找平方根

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        l=1
        r=num
        while l+1!=r:
            mid=(l+r)//2
            if mid*mid==num:
                return True
            if mid*mid>num:
                r=mid
            if mid*mid<num:
                l=mid
        return False

在1~num的範圍進行二分搜
設下限l=1跟上限r=num,mid定義為(1+r)//2
mid平方大於x,r降低到mid
mid平方小於x,l提高到mid
一旦mid平方等於x就回傳True
直到l和r相鄰,若mid平方都不等於num
則num的平方根不為整數,回傳False
最後執行時間28ms(faster than 96.71%)

那我們下題見


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言