- Leetcode 3592. Inverse Coin Change
- 1. 解題思路
- 2. 代碼實現
- 題目鏈接:3592. Inverse Coin Change
1. 解題思路
這一題的話思路上我們走的是一個貪婪算法的思路,即從小到大依次考察,顯然,每一次當前最小的非零面額有且必有當前組成情況差額為1的情況,然后我們考察擁有了該面額的金錢之后會對當前所有的面值構成總數產生怎樣的變化,逐一考察即可得到所有所需的面值,如果其可能的話。
2. 代碼實現
給出python代碼實現如下:
class Solution:def findCoins(self, numWays: List[int]) -> List[int]:n = len(numWays)ways = [1] + [0 for _ in range(n)]ans = []for i, num in enumerate(numWays):d = i+1if num == ways[d]:continueelif num - ways[d] != 1:return []ans.append(d)new_ways = deepcopy(ways)for j in range(d, n+1, d):for k in range(n-j+1):new_ways[k+j] += ways[k]ways = new_waysreturn ans
提交代碼評測得到:耗時79ms,占用內存17.68MB。