python算法練習:尋找下一個完全平方數

題目大意:Return the next square if sq is a square, -1 otherwise

我自己最開始寫的:

import math

def find_next_square(sq):
    a=math.sqrt(sq)#a的類型是float
#    print(type(a))
    if int(a)==a:
        return (a+1)**2
    else:    
        return -1

後來又寫了一種比較笨的:

def fine_next_square(sq):
    s=[i**2 for i in range(1,1000000)]
    if sq in s:
        return s[s.index(sq)+1]
    else:
        return -1
這個方法效率低,很傻。


然後學習了更多比較好的解法,供大家參考:

def find_next_square(sq):
    root = sq ** 0.5
    if root.is_integer():
        return (root + 1)**2
    return -1
def find_next_square(sq):
    x = sq**0.5    
    return -1 if x % 1 else (x+1)**2
from math import sqrt
def find_next_square(sq):
    return (sqrt(sq)+1)**2 if sqrt(sq)%1 == 0 else -1
import math
def find_next_square(sq):
    return (math.sqrt(sq) + 1) ** 2 if (math.sqrt(sq)).is_integer() else -1
def find_next_square(sq):
    root = sq ** 0.5
    if (root % int(root) == 0):
        return (root + 1) ** 2
    return -1
find_next_square=lambda sq: (lambda sqrt: (sqrt+1)**2 if sqrt**2==sq else -1)(int(sq**0.5))
def find_next_square(s):
    return -1 if s**0.5%1!=0 else (s**0.5+1)**2

這個也比較有意思:

def find_next_square(sq):
    n = int(sq ** 0.5)
    if not sq - n ** 2:
        return (n+1)**2
    
    return -1






 
發佈了36 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章