leetCode 279 完全平方數

2021-10-10 13:42:59 字數 1191 閱讀 2416

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

示例 1:

輸入: n = 12

輸出: 3

解釋: 12 = 4 + 4 + 4.

示例 2:

輸入: n = 13

輸出: 2

解釋: 13 = 4 + 9.

本題等價於求最短路徑的問題。將每個整數當成乙個樹的節點,下乙個節點值為當前節點值減去在平方數列表squares中的乙個值,這樣就能形成一棵樹,當下乙個節點值為0時說明找到了一種平方數的組合,通過bfs可以求得最短路徑,也就是求得最短得組合大小。

class

solution

// 2. 將整數看成乙個節點如果兩個整數相減為乙個平方數

// ,則兩個整數所在節點存在一條邊

boolean

seen =

newboolean

[n +1]

; queue

queue =

newlinkedlist

<

>()

; queue.

offer

(n);

seen[n]

=true

;int level =0;

while

(!queue.

isempty()

)}}return n;

}}

假設n為5

0:01:1

2:1+1

3: 1+1+1

4: 1+1+1+1 、 4

5: 1+4、1+1+1+1

class

solution

// 設定狀態dp[i]表示數字夠成數字i所使用的完全平方數的個數, dp[0] = 0

int[

] dp =

newint

[n+1];

for(

int i =

1; i <= n; i++

) dp[i]

= min;

}return dp[n];}

}

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...

Leetcode279 完全平方數

給定正整數 n,找到若干個完全平方數 比如 1,4,9,16,使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12 輸出 3 解釋 12 4 4 4.示例 2 輸入 n 13 輸出 2 解釋 13 4 9.解法1 bfs public intnumsquares in...