Problem
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.
class Solution { public int numSquares(int n) { int[] dp = new int[n+1]; Arrays.fill(dp, n+2); dp[0] = 0; for (int i = 1; i <= n; i++) { int min = dp[i]; int factor = 1; while (i-factor*factor >= 0) { min = Math.min(min, dp[i-factor*factor]+1); factor++; } dp[i] = min; } return dp[n]; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72622.html
摘要:題目要求判斷一個數(shù)字最少由幾個平方數(shù)的和構(gòu)成。思路一暴力遞歸要想知道什么樣的組合最好,暴力比較所有的結(jié)果就好啦。當(dāng)然,效率奇差。代碼如下思路三數(shù)學(xué)統(tǒng)治一切這里涉及了一個叫做四平方定理的內(nèi)容。有興趣的可以去了解一下這個定理。 題目要求 Given a positive integer n, find the least number of perfect square numbers (...
摘要:題目給一個正整數(shù)問他最少能被幾個完全平方數(shù)和表示。舉例,返回,返回解法我能看懂的就只有的方法,原理如下代碼 題目: 給一個正整數(shù)n,問他最少能被幾個完全平方數(shù)和表示。 舉例: 13=4+9, 返回2;12 = 4+4+4, 返回3; 解法: 我能看懂的就只有dynamic-programming的方法,原理如下: dp[0] = 0 dp[1] = dp[0]+1 = 1 dp[2...
摘要:動態(tài)規(guī)劃復(fù)雜度時間空間思路如果一個數(shù)可以表示為一個任意數(shù)加上一個平方數(shù),也就是,那么能組成這個數(shù)最少的平方數(shù)個數(shù),就是能組成最少的平方數(shù)個數(shù)加上因?yàn)橐呀?jīng)是平方數(shù)了。 Perfect Squares Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4...
摘要:動態(tài)規(guī)劃法建立空數(shù)組從到每個數(shù)包含最少平方數(shù)情況,先所有值為將到范圍內(nèi)所有平方數(shù)的值賦兩次循環(huán)更新,當(dāng)它本身為平方數(shù)時,簡化動態(tài)規(guī)劃法四平方和定理法 Problem Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) whi...
閱讀 2580·2021-10-11 10:58
閱讀 1161·2021-09-29 09:34
閱讀 1516·2021-09-26 09:46
閱讀 3842·2021-09-22 15:31
閱讀 743·2019-08-30 15:54
閱讀 1466·2019-08-30 13:20
閱讀 1260·2019-08-30 13:13
閱讀 1495·2019-08-26 13:52