美文网首页
leetcode 279. 完全平方数

leetcode 279. 完全平方数

作者: xgz_pmx | 来源:发表于2019-02-23 17:18 被阅读0次

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

示例 1:
输入: n = 12
输出: 3 
解释: 12 = 4 + 4 + 4.
示例 2:
输入: n = 13
输出: 2
解释: 13 = 4 + 9.

思路:
visited=[False(n)]:一组长度为n的False数组,用来记录visited[i]是否已经被访问。因为后面访问到相同数值的话,step的长度肯定是大于之前的step。所以被访问过一个数值i就把visited[i]置为True。
res[[n,step]]:记录数值和其经过的step;
每次pop出res第一个数值,循环遍历其完全平方数。

class Solution(object):
    def numSquares(self, n):
        """
        :type n: int
        :rtype: int
        """
        res = [];
        res.append([n,0]);
        visited = [False for _ in range(n+1)];
        visited[n] = True;
        while res:
            tmp,step = res.pop(0);
            i = 1;
            muti = tmp - i*i;
            while muti >= 0:
                if muti == 0:
                    return step + 1;
                if not visited[muti]:
                    res.append([muti,step+1]);
                    visited[muti] = True;
                i += 1;
                muti = tmp - i*i;

相关文章

  • leetcode 279. 完全平方数

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

  • LeetCode 279. 完全平方数

    题目 给你一个整数 n ,返回和为 n 的完全平方数的最少数量。完全平方数是一个整数,其值等于另一个整数的平方;换...

  • 279. 完全平方数

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

  • 279. 完全平方数

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

  • 279. 完全平方数

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

  • 279. 完全平方数

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

  • 279. 完全平方数

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

  • 279. 完全平方数

    https://leetcode-cn.com/problems/perfect-squares/给定正整数 n,...

  • 279. 完全平方数

    直接转化为换零钱问题 我的代码的效率不是最高的, 但是可读性很好.

  • 279. 完全平方数

    解法

网友评论

      本文标题:leetcode 279. 完全平方数

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