Encapsulation keeps an object's data private and only changes it through methods that enforce the rules. Баланс банковского счёта может изменяться только через deposit and withdraw.
Start with a balance of 0 and process the operations, each deposit <amount> or withdraw <amount>:
- An amount that is 0 or negative is rejected.
- A withdrawal larger than the current balance is rejected.
- Otherwise the balance changes.
Implement bank_account_rules(operations).
Input
operations: Операции в заданном порядке.
Output
Return [final_balance, rejected_count].
Ограничения
0 ≤ число операций ≤ 100,000
−10^9 ≤ сумма ≤ 10^9
Примеры
Ввод:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]
Ожидаемый вывод:
expected = [70, 1]
Ввод:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};
Ожидаемый вывод:
std::vector<long long> expected = {70, 1};
Ввод:
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};
Ожидаемый вывод:
long[] expected = new long[] {70, 1};
Пояснение
100 − 30 оставляет 70; снятие 200 увело бы счёт в минус, поэтому отклонено: [70, 1].
Ввод:
operations = ["deposit -5", "withdraw 0", "deposit 10"]
Ожидаемый вывод:
expected = [10, 2]
Ввод:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};
Ожидаемый вывод:
std::vector<long long> expected = {10, 2};
Ввод:
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};
Ожидаемый вывод:
long[] expected = new long[] {10, 2};
Пояснение
Отрицательный вклад и нулевое снятие отклонены; последний вклад проходит: [10, 2].
Как подступиться
Сначала попробуйте сами, затем открывайте подсказки по одной.
Подсказка 1
Держите баланс закрытым и меняйте его только в deposit и withdraw.
Подсказка 2
Первым делом отклоняйте суммы, равные 0 или меньше.
Подсказка 3
Снятие не может опустить баланс ниже нуля.
Ожидаемая сложность
время O(число операций), доп. память O(1)
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.