lintcode-medium-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
Given n = 12
, return 3
because 12 = 4 + 4 + 4
Given n = 13
, return 2
because 13 = 4 + 9
public class Solution { /** * @param n a positive integer * @return an integer */ public int numSquares(int n) { // Write your code here if(n <= 0) return 0; int[] dp = new int[n + 1]; dp[0] = 0; for(int i = 1; i <= n; i++) dp[i] = i; for(int i = 0; i <= n; i++){ for(int j = 1; i + j * j <= n; j++){ dp[i + j * j] = Math.min(dp[i + j * j], dp[i] + 1); } } return dp[n]; } }