今天和大家聊的问题叫做 完全平方数,我们先来看题面:https://leetcode-cn.com/problems/perfect-squares/
Given an integer n, return the least number of perfect square numbers that sum to n.A perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself. For example, 1, 4, 9, and 16 are perfect squares while 3 and 11 are not.
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。
给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。
示例
示例 1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4 示例 2: 输入:n = 13 输出:2 解释:13 = 4 + 9
解题
class Solution { public int numSquares(int n) { // 动态规划 int[] dp = new int[n+1];// 默认初始化值都为0 for(int i=1;i<=n;i++) { // 最坏的情况就是每次都为1相加 dp[i] = i; // 对其更新 for(int j=1;i-j*j>=0;j++) { dp[i] = Math.min(dp[i],dp[i-j*j]+1);//动态转移方程 } } return dp[n]; } }
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。