題目連結:
題目意譯:
給定一整數 n,回傳最少所需完全平方數使得總和為 n。
一個完全平方數為一整數其為一整數的平方之值;換句話說,其為某個整數與自己的乘積。例如,1 、 4 、 9 和 16 為完全平方數,而 3 和 11 則不是。
限制:
1 ≦ n ≦ 10 ^ 4
範例測資:
範例 1:
輸入: n = 12
輸出: 3
解釋: 12 = 4 + 4 + 4.
範例 2:
輸入: n = 13
輸出: 2
解釋: 13 = 4 + 9.
解題思維:
定義一陣列 D,其中 D[i] 代表數字 i 最少所需之完全平方數。則我們可以看到 D[0] = 0 、 D[1] = 1,且
D[i] = min(D[i - j ^ 2]) + 1 對於所有 j ^ 2 ≦ i
因此我們可以從 k = 2 開始一路從 D[2] 一路算到 D[n],此時 D[n] 即為所求。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。