diff --git a/problems/0279.完全平方数.md b/problems/0279.完全平方数.md index d5736951..1a0b55c0 100644 --- a/problems/0279.完全平方数.md +++ b/problems/0279.完全平方数.md @@ -369,6 +369,27 @@ impl Solution { } ``` +```rust +// 先遍历物品 +impl Solution { + pub fn num_squares(n: i32) -> i32 { + let (n, mut goods) = (n as usize, 1); + let mut dp = vec![i32::MAX; n + 1]; + dp[0] = 0; + loop { + if goods * goods > n { + break; + } + for j in goods * goods..=n { + dp[j] = dp[j].min(dp[j - goods * goods] + 1); + } + goods += 1; + } + dp[n] + } +} +``` +