⬆︎
×

[LC] 2241 Design an ATM Machine

Hyplus目录

Java

import java.util.Arrays;

/**
 * <a href="https://leetcode.cn/problems/design-an-atm-machine/">Design an ATM Machine</a>
 * 贪心;设计;数组
 */
class ATM {
    private int[] cnt;
    private int[] values;

    public ATM() {
        cnt = new int[5];
        values = new int[]{20, 50, 100, 200, 500};
    }

    public void deposit(int[] banknotesCount) {
        for (int i = 0; i < 5; i++) {
            cnt[i] += banknotesCount[i];
        }
    }

    public int[] withdraw(int amount) {
        int[] res = new int[5];
        for (int i = 4; i >= 0; i--) {
            if (amount >= values[i] && cnt[i] > 0) {
                res[i] = Math.min(cnt[i], amount / values[i]);
                amount -= res[i] * values[i];
            } else {
                res[i] = 0;
            }
        }
        if (amount > 0) {
            return new int[]{-1};
        } else {
            for (int i = 0; i < 5; i++) {
                cnt[i] -= res[i];
            }
            return res;
        }
    }
}

Go

type ATM struct {
    cnt   []int
    value []int
}

func Constructor() ATM {
    return ATM{cnt: []int{0, 0, 0, 0, 0}, value: []int{20, 50, 100, 200, 500}}
}

func (a *ATM) Deposit(banknotesCount []int) {
    for i, v := range banknotesCount {
        a.cnt[i] += v
    }
}

func (a *ATM) Withdraw(amount int) []int {
    res := make([]int, 5)
    for i := 4; i >= 0; i-- {
        if amount >= a.value[i] && a.cnt[i] > 0 {
            res[i] = min(a.cnt[i], amount/a.value[i])
            amount -= res[i] * a.value[i]
        } else {
            res[i] = 0
        }
    }
    if amount > 0 {
        return []int{-1}
    } else {
        for i, v := range res {
            a.cnt[i] -= v
        }
        return res
    }
}

发表评论