加载中...
279-完全平方数(Perfect Squares)
发表于:2021-12-03 | 分类: 中等
字数统计: 271 | 阅读时长: 1分钟 | 阅读量:

原文链接: 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.

 

Example 1:

Input: n = 12
Output: 3
Explanation: 12 = 4 + 4 + 4.

Example 2:

Input: n = 13
Output: 2
Explanation: 13 = 4 + 9.

 

Constraints:

  • 1 <= n <= 104

中文题目

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

给你一个整数 n ,返回和为 n 的完全平方数的 最少数量

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,14916 都是完全平方数,而 311 不是。

 

示例 1:

输入:n = 12
输出:3 
解释:12 = 4 + 4 + 4

示例 2:

输入:n = 13
输出:2
解释:13 = 4 + 9

 

提示:

  • 1 <= n <= 104

通过代码

高赞题解

解题方案

思路:

  • 标签:动态规划
  • 首先初始化长度为 n+1 的数组 dp,每个位置都为 0
  • 如果 n0,则结果为 0
  • 对数组进行遍历,下标为 i,每次都将当前数字先更新为最大的结果,即 dp[i]=i,比如 i=4,最坏结果为 4=1+1+1+1 即为 4 个数字
  • 动态转移方程为:dp[i] = MIN(dp[i], dp[i - j * j] + 1)i 表示当前数字,j*j 表示平方数
  • 时间复杂度:$O(n*sqrt(n))$,sqrt 为平方根

[]
class Solution { public int numSquares(int n) { int[] dp = new int[n + 1]; // 默认初始化值都为0 for (int i = 1; i <= n; i++) { dp[i] = i; // 最坏的情况就是每次+1 for (int j = 1; i - j * j >= 0; j++) { dp[i] = Math.min(dp[i], dp[i - j * j] + 1); // 动态转移方程 } } return dp[n]; } }
[]
/** * @param {number} n * @return {number} */ var numSquares = function(n) { const dp = [...Array(n+1)].map(_=>0); // 数组长度为n+1,值均为0 for (let i = 1; i <= n; i++) { dp[i] = i; // 最坏的情况就是每次+1 for (let j = 1; i - j * j >= 0; j++) { dp[i] = Math.min(dp[i], dp[i - j * j] + 1); // 动态转移方程 } } return dp[n]; };

画解:

<1.png,2.png,3.png,4.png,5.png,6.png,7.png,8.png,9.png,10.png,11.png,12.png,13.png>

想看大鹏画解更多高频面试题,欢迎阅读大鹏的 LeetBook:《画解剑指 Offer 》,O(∩_∩)O

统计信息

通过次数 提交次数 AC比率
218369 344028 63.5%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
计数质数 中等
丑数 II 中等
上一篇:
278-第一个错误的版本(First Bad Version)
下一篇:
282-给表达式添加运算符(Expression Add Operators)
本文目录
本文目录