279. 完全平方数

原题链接:

279. 完全平方数

https://leetcode.cn/problems/perfect-squares/description/

完成情况:

在这里插入图片描述

解题思路:

这段代码是一个解决问题的类,其中包含一个方法 numSquares,该方法接受一个整数 n 作为参数,并返回一个整数。该方法的作用是计算将整数 n 表示为完全平方数之和所需的最小数量。

代码中首先创建了一个长度为 n+1 的整型数组 f,用于存储每个整数 i 对应的最小数量。然后使用两个循环,外循环遍历从 1 到 n 的每个整数 i,内循环遍历从 1 开始的完全平方数 j 直到小于等于 i。在内循环中,计算当前整数 i 减去完全平方数 j*j 对应的最小数量,并将其与当前最小值 minn 比较并取最小值。最后将 minn+1 赋值给数组 f 中的 i 索引位置,表示整数 i 的最小数量。

最后返回数组 f 中索引为 n 的值,即整数 n 表示为完全平方数之和所需的最小数量。

参考代码:

package leetcode板块;

public class _279完全平方数 {
    /**
     * dp去模拟1 -> n之间所有数的遍历情况
     * @param n
     * @return
     */
    public int numSquares(int n) {
        int [] dp_numSquares = new int[n + 1];
        for (int i = 1; i < dp_numSquares.length; ++i){
            //逐个数去寻找最合适的dp值
            //每一轮都确保能寻找到最合适的最小值
            int curMin = Integer.MAX_VALUE;
            for (int j = 1; j*j <= i; ++j){
                curMin = Math.min(curMin,dp_numSquares[i - j * j]);
            }
            //因为按照上述条件,初始时,赋予的值是0
            dp_numSquares[i] = curMin+1;
        }
        return dp_numSquares[n];
    }
}

错误经验吸取

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值