We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 571d8f3 commit 154af66Copy full SHA for 154af66
动态规划/完全平方数-279.js
@@ -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