Leetcode 279.完全平方数
Leetcode 279.完全平方数
题目要求
-
给你一个整数n,返回和为n的完全平方数的最少数量。
-
完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9和16都是完全平方数,而3和11不是。
示例1:
输入:n = 12
输出:3
解释:12 = 4 + 4 + 4
示例2:
输入:n = 13
输出:2
解释:13 = 4 + 9
动态规划
动规五部曲
跟上一道题《零钱兑换》基本一致,只不过零钱的价值是完全平方数。
-
确定dp数组(dp table)以及下标的含义
dp[j]表示和为j的完全平方数的最少数量 -
确定递推公式
dp[j] = Math.min(dp[j], dp[j - i*i] + 1) -
dp数组如何初始化
dp[0] = 0
因为后续要比较取最小值,所以其他值初始化为一个较大的数——Integer.MAX_VALUE -
确定遍历顺序
正着遍历,完全平方数可以重复使用 -
举例推导dp数组

1 | class Solution { |
