美文网首页
LeetCode-279 完全平方数

LeetCode-279 完全平方数

作者: FlyCharles | 来源:发表于2019-02-24 15:44 被阅读0次

1. 题目

https://leetcode-cn.com/problems/perfect-squares/

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

示例 1:

输入: n = 12
输出: 3 
解释: 12 = 4 + 4 + 4.

示例 2:

输入: n = 13
输出: 2
解释: 13 = 4 + 9.

2. 我的AC

思路一:四平方和定理

Lagrange 四平方定理: 任何一个正整数都可以表示成不超过四个整数的平方之和。

  • 结果只有1,2,3,4 四种可能

另外一个非常重要的推论

if and only if n is not of the form n=4^a(8b+7) for integers a and b.
满足四数平方和定理的数 n(这里要满足由四个数构成,小于四个不行),必定满足 n=4^a(8b+7)

原文:https://blog.csdn.net/wangsiyu34567/article/details/82825475

class Solution(object):
    def numSquares(self, n):
        """
        :type n: int
        :rtype: int
        """
        while n % 4 == 0:
            n /= 4
        if n % 8 == 7:
            return 4
        a = 0
        while a**2 <= n:
            b = int((n - a**2)**0.5)
            if a**2 + b**2 == n: 
                return (not not a) + (not not b)
            a += 1
        return 3

思路二:动态规划


3. 小结

  1. 取整函数
  • 向下取整 int() 函数
>>> a = 3.75
>>> int(a) # 3
  • 四舍五入 round() 函数
>>> round(3.25); round(4.85)
3.0
5.0
  • 向上取整 math 模块中的 ceil() 方法
>>> a = 3.75
>>> int(a) # 3
  1. 判断一个数字类型
isinstance(num, int) # False, True
  1. 平方根
num ** 0.5
  1. 判断是否为正整数 not not num
(not not a) + (not not b) # a和b是否为正整数,
# 都为正整数的话返回2,只有一个是正整数的话返回1

相关文章

  • LeetCode-279 完全平方数

    1. 题目 https://leetcode-cn.com/problems/perfect-squares/ 给...

  • 完全平方数

    题目描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需...

  • 完全平方数

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/perf...

  • 5-14完全平方数

    完全平方数就是: 两个相同的数相乘的数。 完全平方数的表示 A是完全平方数,通常用a的平方来表示。在学习了字母代替...

  • 判断完全平方数

    就是判断一个数字能不能被开平方, 比如9的开平方是3 是对的。 5没法开平方就是错的。 原理就是,开平方后判断是否...

  • 279. 完全平方数

    题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需...

  • 279. 完全平方数

    279. 完全平方数 1.思路 1.1动态规划: 这个题很容易就想到了动态规划.每次F[n]=min{F[i]+F...

  • 279. 完全平方数

    思路:才用广度优先搜索每次把 减去平方数的差值 和 搜索深度 入队遍历,第一次找到差值0时,对应的搜索深度即所求。...

  • 279. 完全平方数

    好久没有刷题了,还是要坚持和继续的,刷题是我快乐! 这个的思路就是一层一层的进行,在第一层用所有小于n的平方数去被...

  • leetcode-完全平方数

    这道题看着简单,但是自己没啥思路。 有三种方法 法一:动态规划,状态转移方程式 dp[i] = min(dp[i]...

网友评论

      本文标题:LeetCode-279 完全平方数

      本文链接:https://www.haomeiwen.com/subject/lzuvyqtx.html