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];
    }
}
rajendra

Recent Posts

Largest Unique Number Java Solution

Question : Given an array of integers A, return the largest integer that only occurs once.…

9 months ago

Jump Search Algorithm In Java

Jump search algorithm is a pretty new algorithm to search for an element in a…

1 year ago

Knuth Morris Pratt Pattern Search Algorithm

What is Knuth Morris Pratt or KMP algorithm ? KMP is an algorithm which is…

1 year ago

Binary Search Algorithm In Java

Binary Search is a Logarithmic search which finds the target element in a sorted array…

1 year ago

Leetcode Integer to Roman Java Solution

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X…

2 years ago

Leetcode Container With Most Water Java Solution

Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such…

2 years ago

This website uses cookies.