Problema
Encapsulation mantém os dados de um objeto privados e só os altera por meio de métodos que aplicam as regras. O saldo de uma conta bancária só pode mudar por deposit e withdraw.
Comece com um saldo de 0 e processe as operações, cada deposit <amount> ou withdraw <amount>:
- Um valor que seja 0 ou negativo é rejeitado.
- Um saque maior que o saldo atual é rejeitado.
- Caso contrário, o saldo muda.
Implemente bank_account_rules(operations).
Entrada
operations: As operações, na ordem.
Saída
Retorne [final_balance, rejected_count].
Restrições
0 ≤ número de operações ≤ 100,000
−10^9 ≤ valor ≤ 10^9
Exemplos
Entrada:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]
Saída esperada:
expected = [70, 1]
Entrada:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};
Saída esperada:
std::vector<long long> expected = {70, 1};
Entrada:
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};
Saída esperada:
long[] expected = new long[] {70, 1};
Explicação
100 − 30 deixa 70; sacar 200 deixaria a conta no negativo, então isso é rejeitado: [70, 1].
Entrada:
operations = ["deposit -5", "withdraw 0", "deposit 10"]
Saída esperada:
expected = [10, 2]
Entrada:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};
Saída esperada:
std::vector<long long> expected = {10, 2};
Entrada:
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};
Saída esperada:
long[] expected = new long[] {10, 2};
Explicação
O depósito negativo e o saque zero são ambos rejeitados; o último depósito tem sucesso: [10, 2].
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Mantenha o saldo privado e altere-o só em deposit e withdraw.
Dica 2
Recuse primeiro valores iguais a 0 ou negativos.
Dica 3
Um saque não pode deixar o saldo abaixo de zero.
Complexidade esperada
tempo O(número de operações), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.