LEET CODE 322 零錢兌換

2021-10-07 16:40:35 字數 1170 閱讀 1871

void countarry(int *numarry, int amount, const int *coins, int coinssize)

numarry[0] = 0;

// for (int i = 0; i < coinssize; i++)

}int min(const int num1, const int num2)

else

}int coinchange(int* coins, int coinssize, int amount)}}

int ret = numarry[amount];

if (numarry[amount] > amount)

free(numarry);

return ret;

}

犯錯點總結:1、注釋處沒有考慮到[1] 0的情況,導致numarry在malloc的時候只有乙個元素,而注釋處會給numarry[1]複製當然這裡是沒有必要賦值的。

void countarry(int *numarry, int amount, const int *coins, int coinssize)

numarry[0] = 0;

// for (int i = 0; i < coinssize; i++)

}

2、動態規劃原理沒搞清,動態啊規劃思想是前一步所有可能+1到now時刻,哪一步最少,now時的次數就最少,這裡剛開始沒有+1,導致計算時結果都是0

for(int i = 1; i <= amount; i++) 

}}

3、第三個誤去就是對小於1次可能性的刪選,當沒有可能得到結果時,要返回-1,這裡首先要搞清楚什麼時候會出現這中情況。

從道理上來講,當我10的時候,可能性大於10,那麼這種情況肯定時錯誤的,為了營造這種可能性,首先初始化的時候,把除了0的地方都複製為n+1,因此,沒走正常渠道,結果就是n+1.

int ret = numarry[amount];

if (numarry[amount] > amount)

free(numarry);

return ret;

for(int i = 0; i <= amount; i++)

leetcode322 零錢兌換

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11輸出 3解釋 11 5 5 1 示例 2 輸入 coins 2 amount 3...

leetcode 322 零錢兌換

給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1示例 2 輸入 coins 2 amount ...

LeetCode 322 零錢兌換

322 零錢兌換 題目 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2 輸入 co...