完全平方数
T279--完全平方数【中等题】
题目描述
题目描述
简言之就是找到最少的完全平方数来相加得到给定的目标数字。
1、解决思路
不难看出,这道题目的状态转移方程为:
nums[n] = Math.min(nums[n],nums[n - i* i] + 1)
,我们可以使用迭代的方法,不断的迭代调用之前每一个数字的平方数之和的最小个数。
算法细节
在我们每次计算得到
nums[n] = Math.min(nums[n],nums[n - i* i] + 1)
之前,应该先对
nums[n]
进行一个判断。
如果
nums[n]==0
,那么就代表着在此之前,
nums[n]
并没有被初始化,此时我们应该使用
nums[n - i* i] + 1
对
nums[n]
进行赋值,再进入下轮循环。
如果
nums[n]!=0
,则代表已经被初始化了,就可以按照上面的迭代方式取最小值了。
2、代码实现
public int numSquares(int n){
int[] nums = new int[n+1];
return help(n,nums);
}
public int help(in