1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int numSquares(int n) { Map<Integer, Integer> cache = new HashMap<>(); return dfs(cache, n); }
private int dfs(Map<Integer, Integer> cache, int n) { Integer count = cache.get(n); if (count != null) { return count; }
count = n; for (int i = 1; i * i <= n; i++) { count = Math.min(count, 1 + dfs(cache, n - i * i)); }
cache.put(n, count); return count; } }
|