1 class Solution { 2 public: 3 int coinChange(vector<int>& coins, int amount) { 4 int len = amount+1; 5 vector<int> vi(len, amount+1); 6 vi[0] = 0; 7 for(int coin: coins){ 8 for(int i=1;i<len;i++) 9 if(coin<=i) 10 vi[i] = min(vi[i], vi[i-coin]+1); 11 } 12 return (vi[amount] > amount? -1 : vi[amount]); 13 } 14 };
这里用amount+1来初始化容器,很强势
在循环计算中,只需要计算-1当前硬币值就行了,因为前面会计算减去多个当前值的情况,这里再算就重复了