[leetcode] problem 279 – perfect squares

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n.

Example

No.1

Input: n = 12

Output: 3

Explanation: 12 = 4 + 4 + 4.

No.2

Input: n = 13

Output: 2

Explanation: 13 = 4 + 9.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13

public int (int n) {
int[] dp = new int[n + 1];
Arrays.fill(dp, Integer.MAX_VALUE);
dp[0] = 0;

for (int i = 1; i <= n; i++) {
for (int j = 1; j * j <= i; j++)
dp[i] = Math.min(dp[i], dp[i - j * j] + 1);
}

return dp[n];
}