zoukankan      html  css  js  c++  java
  • LeetCode 279. Perfect Squares

    原题

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n.

    For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9.

     

    思路

    类似于LeetCode 322题

    完整代码

    class Solution(object):
        def numSquares(self, n):
            """
            :type n: int
            :rtype: int
            """
            if n < 1:
                return 0
            square_num = []
            for i in xrange(1, sys.maxint):
                if i*i <= n:
                    square_num.append(i*i)
                else:
                    break
            dp = [sys.maxint] * (n + 1)
            dp[0] = 0
            for i in xrange(1, n+1):
                for j in xrange(len(square_num)):
                    if (i >= square_num[j]):
                        dp[i] = min(dp[i], dp[i - square_num[j]] + 1)
            return dp[n]
    

      

  • 相关阅读:
    2017年3月9日上午学习
    3.17上午
    3.16上午
    3.16下午
    3.15
    2017.3.14
    3.14
    217.3.13上午
    2017.4.7-morning
    2017.4.6-afternoon
  • 原文地址:https://www.cnblogs.com/LiCheng-/p/6694482.html
Copyright © 2011-2022 走看看