我正在解决 algoexpert.io 编码挑战,但我无法理解题为“不可构造变更”的问题之一的建议解决方案
下面是挑战题:
给定一个表示您拥有的硬币价值的正整数数组,编写一个函数,该函数返回您无法创建的最小找零金额(最小金额)。给定的硬币可以具有任何正整数值并且不一定是唯一的(即,您可以拥有多个相同值的硬币)。
例如,如果给您硬币 = [1, 2, 5],则您不能创建的最小零钱金额为 4。创建是 1。
// O(nlogn) time, O(n) size.
function nonConstructibleChange(coins) {
coins = coins.sort((a, b) => a - b); // O(nlogn) time operation
let change = 0;
for (coin of coins) {
if (coin > change + 1) return change + 1;
change += coin;
}
return change + 1;
}
Run Code Online (Sandbox Code Playgroud)
我的问题
我不完全确定解决方案的作者是如何得出这样的直觉的
if the current coin is greater than `change + 1`, the smallest impossible change …Run Code Online (Sandbox Code Playgroud)