Perfect Squares

LeetCode Q 279 - 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.

Solution

DP function:
dp[n] = Min{ dp[n - i*i] + 1 }, n - i*i >=0 && i >= 1

Code:

public int numSquares(int n) {
	int[] dp = new int[n + 1];
	Arrays.fill(dp, Integer.MAX_VALUE);
	for (int i = 0; i * i <= n; i++) 
		dp[i * i] = 1;
	for (int i = 0; i <= n; i++) {
		for (int j = 1; j * j <= i; j++) {
			dp[i] = Math.min(dp[i], dp[i - j * j] + 1);
		}
	}
	return dp[n];
}

   Reprint policy


《Perfect Squares》 by Tong Shi is licensed under a Creative Commons Attribution 4.0 International License
 Previous
Bulb Switcher Bulb Switcher
LeetCode Q 319 - Bulb SwitcherThere are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn
2019-04-11 Tong Shi
Next 
Super Ugly Number Super Ugly Number
LeetCode Q 313 - Super Ugly NumberWrite a program to find the nth super ugly number. Super ugly numbers are positive num
2019-04-11 Tong Shi
  TOC