279. 完全平方数

  1. 题目链接

  2. 解题思路:先想一下暴力怎么做。直接看代码更清晰

    # rest:还剩下的数字
    def process(self, rest):
    if rest == 0:
    return 0
    ans = 2 ** 31 - 1
    # 从1开始尝试,最多尝试到sqrt(rest)
    for i in range(1, int(math.sqrt(rest)) + 1):
    # 要取最小值
    ans = min(ans, self.process(rest - i * i) + 1)
    return ans
    • 一个参数,一维的动态规划,加记忆化搜索表即可
  1. 代码

    class Solution:
    def process(self, rest, dp):
    if rest == 0:
    return 0
    if dp[rest] != -1:
    return dp[rest]
    ans = 2 ** 31 - 1
    for i in range(1, int(math.sqrt(rest)) + 1):
    ans = min(ans, self.process(rest - i * i, dp) + 1)
    dp[rest] = ans
    return ans
    def numSquares(self, n: int) -> int:
    dp = [-1] * (n + 1)
    return self.process(n, dp)
posted @   ouyangxx  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示