# Solving Leetcode Interviews in Seconds with AI: Perfect Squares


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "279" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> Given an integer n, return the least number of perfect square numbers that sum to n. A perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself. For example, 1, 4, 9, and 16 are perfect squares while 3 and 11 are not.   Example 1:  Input: n = 12 Output: 3 Explanation: 12 = 4 + 4 + 4.  Example 2:  Input: n = 13 Output: 2 Explanation: 13 = 4 + 9.    Constraints:  1 <= n <= 104  

	# Explanation
	Here's the breakdown of the solution:

*   **Dynamic Programming:** Use a DP table `dp` where `dp[i]` stores the minimum number of perfect squares that sum to `i`.
*   **Bottom-Up Approach:** Iterate from 1 to `n`, and for each `i`, find the minimum number of perfect squares by considering all perfect squares less than or equal to `i`. Update `dp[i]` with the minimum value found.
*   **Optimization:** The core optimization comes from pre-calculating the perfect squares up to n.

*   **Runtime Complexity:** O(n * sqrt(n)), **Storage Complexity:** O(n)

	
	# Code
	```python
	def numSquares(n: int) -> int:
    """
    Given an integer n, return the least number of perfect square numbers that sum to n.
    """

    dp = [float('inf')] * (n + 1)
    dp[0] = 0

    for i in range(1, n + 1):
        j = 1
        while j * j <= i:
            dp[i] = min(dp[i], dp[i - j * j] + 1)
            j += 1

    return dp[n]
	```
			
