PYTHON经典算法-完美平方

问题描述:

给定一个正整数n,找到若干个完全平方数(例如:1,4,9),使得
它们的和等于n,完全平方数的个数最少。

问题示例:

给出n=12,返回3,因为12=4+4+4;给出n=13,返回2,因为13=4+9

代码实现

class Solution:
    def numSquares(self, n):
        while n % 4 == 0:  # 4这个数字很特殊,它们多少无论多少个4想乘都是一个完全平方数
            n //= 4  # 向下取整(对于浮点数)
        if n % 8 == 7:
            return 4
        for i in range(n + 1):
            temp = i * i
            if temp <= n:
                if int((n - temp) ** 0.5) ** 2 + temp == n:
                    return 1 + (0 if temp == 0 else 1)
            else:
                break
        return 3



if __name__ == '__main__':
    solution = Solution()
    print(solution.numSquares(13))

posted @ 2019-12-05 10:16  吴雄  阅读(1156)  评论(0编辑  收藏  举报