Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...
) which sum to n.
Example 1:
Input: n =12
Output: 3 Explanation:12 = 4 + 4 + 4.
Example 2:
Input: n =13
Output: 2 Explanation:13 = 4 + 9.
Solution: We will solve this problem using Dynamic Programming, the sum of perfect squares for the number would be the number of perfect squares for previous number +1 whichever is minimum Math.min(dp[i], dp[i-j*j]+1)
class HackerHeap {
public int numSquares(int n) {
int max = (int) Math.sqrt(n);
int[] dp = new int[n+1];
Arrays.fill(dp, Integer.MAX_VALUE);
for(int i=1; i<=n;i++){
for(int j=1; j<=max;j++){
if(i==j*j) {
dp[i] = 1;
}else if(i>j*j){
dp[i] = Math.min(dp[i], dp[i-j*j]+1);
}else if(i<j*j) {
break;
}
}
}
return dp[n];
}
}
Question : Given an array of integers A, return the largest integer that only occurs once.…
Jump search algorithm is a pretty new algorithm to search for an element in a…
What is Knuth Morris Pratt or KMP algorithm ? KMP is an algorithm which is…
Binary Search is a Logarithmic search which finds the target element in a sorted array…
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X…
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such…
This website uses cookies.