Java初学者找零代码:如何移除residual变量?
移除找零代码中的residual变量方案
直接复用原方法的money变量存储剩余找零金额即可,修改后的代码如下:
import java.util.Arrays; public static int[] change(int money, int price) { int[] coins = {10, 5, 2, 1}; int[] rsl = new int[100]; int size = 0; // 用money存储找零剩余,替代原residual变量 money -= price; for (int coin : coins) { while (money >= coin) { money -= coin; rsl[size] = coin; size++; } } return Arrays.copyOf(rsl, size); }
逻辑说明
原代码里residual的核心作用就是保存money - price的找零剩余金额,我们直接把这个差值赋值给money变量,后续所有对residual的操作都替换为对money的操作,完全保留了原有的贪心找零逻辑:
- 按硬币面值从大到小遍历
- 每次尽可能多地使用当前面值硬币,直到剩余金额不足以使用该面值
- 最终返回整理后的找零硬币数组
内容的提问来源于stack exchange,提问作者As Da
相关产品推荐
相关产品推荐

