LeetCode-279-完全平方數(shù)

題目描述:給定正整數(shù) n,找到若干個完全平方數(shù)(比如 1, 4, 9, 16, ...)使得它們的和等于 n。你需要讓組成和的完全平方數(shù)的個數(shù)最少。
給你一個整數(shù) n ,返回和為 n 的完全平方數(shù)的 最少數(shù)量 。
完全平方數(shù) 是一個整數(shù),其值等于另一個整數(shù)的平方;換句話說,其值等于一個整數(shù)自乘的積。例如,1、4、9 和 16 都是完全平方數(shù),而 3 和 11 不是。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/perfect-squares/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:動態(tài)規(guī)劃
通過動態(tài)規(guī)劃求解,首先,初始化一個dp數(shù)組用來記錄每一位的可以有最少多少個乘方和累加的個數(shù),然后將每一位的值初始化為最大值用于后面的比較,然后核心邏輯就是后面的遍歷過程:
第i位的乘方和組成可以由 i -> j * j 這一步 加上 j * j 位的乘方和的步數(shù)組成,然后比較每一次判斷較小值作為第i位的個數(shù)。
說明:看了下網(wǎng)上按數(shù)學(xué)邏輯的分析求解過程,重點(diǎn)是分析,簡直了,看不太明白,原來通過數(shù)學(xué)分析就可以分析出最多只有幾種情況,然后按這幾種情況判斷即可。
【每日寄語】 學(xué)習(xí)使人豐富知識,知識使人提升才能,才能使人創(chuàng)造業(yè)績。