Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 154af66

Browse files
committed
feat: 完全平方数
1 parent 571d8f3 commit 154af66

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

动态规划/完全平方数-279.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// https://github.com/sl1673495/leetcode-javascript/issues/9
2+
3+
/**
4+
* @param {number} n
5+
* @return {number}
6+
*/
7+
let numSquares = function (n) {
8+
let dp = [];
9+
10+
// 求0就假设为0次
11+
dp[0] = 0;
12+
13+
for (let i = 1; i <= n; i++) {
14+
let j = 1;
15+
// 初始化为Infinity 这样后面任意一个小值都可以覆盖它
16+
let min = Infinity;
17+
while (true) {
18+
// 用 i 减去不断递增的平方数 j * j
19+
let prev = i - j * j;
20+
if (prev < 0) {
21+
break;
22+
}
23+
24+
// 假设i = 10、j = 1 实际上就是在求dp[10 - 1] + 1
25+
// 也就是凑成 9 的最小次数 再加上 1(也就是 1 这个平方数的次数)
26+
min = Math.min(min, dp[prev] + 1);
27+
j++;
28+
}
29+
dp[i] = min === Infinity ? 0 : min;
30+
}
31+
32+
return dp[n];
33+
};

0 commit comments

Comments
 (0)