leetcode 1 完全平方數

2021-10-23 17:42:44 字數 970 閱讀 3452

給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, …)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。

示例 1:

輸入: n = 12

輸出: 3

解釋: 12 = 4 + 4 + 4.

示例 2:

輸入: n = 13

輸出: 2

解釋: 13 = 4 + 9.

題目解析:

這道題如果知道數學定理之後,相當於告訴你:

任何正整數都可以拆分成不超過4個數的平方和 ---> 答案只可能是1,2,3,4

如果乙個數最少可以拆成4個數的平方和,則這個數還滿足 n = (4^a)*(8b+7) ---> 因此可以先看這個數是否滿足上述公式,如果不滿足,答案就是1,2,3了

如果這個數本來就是某個數的平方,那麼答案就是1,否則答案就只剩2,3了

如果答案是2,即n=a^2+b^2,那麼我們可以列舉a,來驗證,如果驗證通過則答案是2

只能是3

class

solution

:def

numsquares

(self, n:

int)

->

int:

while n%4==

0:n /=

4if n%8==

7:return

4 a =

0while a<=n**

0.5:

b =int(

(n-a**2)

**0.5

)if a**

2+b**

2==n:

return

(not

not a)+(

notnot b)

a +=

1return

3

事實證明,演算法題還是數學題

LeetCode 完全平方數

給定正整數 n,找到若干個完全平方數 比如 1,4,9,16,使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。給你乙個整數 n 返回和為 n 的完全平方數的 最少數量 完全平方數 是乙個整數,其值等於另乙個整數的平方 換句話說,其值等於乙個整數自乘的積。例如,1 4 9 和 16 都是完...

Leetcode 279 完全平方數

給定正整數 n,找到若干個完全平方數 比如1,4,9,16,使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12輸出 3解釋 12 4 4 4.示例 2 輸入 n 13輸出 2解釋 13 4 9.解題思路 比較容易想到的方法是bfs 廣度優先搜尋 如果知道四平方和的話就...

LeetCode 279 完全平方數

題目描述 提示幫助 提交記錄社群討論閱讀解答 隨機一題 給定正整數 n,找到若干個完全平方數 比如1,4,9,16,使得它們的和等於n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12輸出 3解釋 12 4 4 4.示例 2 輸入 n 13輸出 2解釋 13 4 9.class sol...