diff --git a/src/main/java/com/fishercoder/solutions/_279.java b/src/main/java/com/fishercoder/solutions/_279.java index 4abfe0ab1d..380ab6c76b 100644 --- a/src/main/java/com/fishercoder/solutions/_279.java +++ b/src/main/java/com/fishercoder/solutions/_279.java @@ -1,5 +1,5 @@ package com.fishercoder.solutions; - +import java.util.*; /** * Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n. @@ -17,4 +17,22 @@ public int numSquares(int n) { return result; } + //DP solution + public int numSquaresDP(int n) { + int[] dp = new int[n + 1]; + Arrays.fill(dp, Integer.MAX_VALUE); + dp[0] = 0; + dp[1] = 1; + for(int i = 1; i <= n; i++) { + int min = Integer.MAX_VALUE; + int j = 1; + while(i -j*j >= 0) { + min = Math.min(min, dp[i - j*j] + 1); + j++; + } + dp[i] = min; + } + return dp[n]; + } + }