Problème
L'encapsulation garde les données d'un objet privées et ne les modifie qu'à travers des méthodes qui appliquent les règles. Le solde d'un compte bancaire ne peut changer que par deposit et withdraw.
Commencez avec un solde de 0 et traitez les opérations, chacune étant deposit <amount> ou withdraw <amount> :
- Un montant égal à 0 ou négatif est rejeté.
- Un retrait supérieur au solde actuel est rejeté.
- Sinon, le solde change.
Implémentez bank_account_rules(operations).
Entrée
operations: Les opérations, dans l'ordre.
Sortie
Retournez [final_balance, rejected_count].
Contraintes
0 ≤ nombre d'opérations ≤ 100,000
−10^9 ≤ montant ≤ 10^9
Exemples
Entrée :
operations = ["deposit 100", "withdraw 30", "withdraw 200"]
Sortie attendue :
expected = [70, 1]
Entrée :
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};
Sortie attendue :
std::vector<long long> expected = {70, 1};
Entrée :
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};
Sortie attendue :
long[] expected = new long[] {70, 1};
Explication
100 − 30 laisse 70 ; retirer 200 mettrait le compte à découvert, c'est donc refusé : [70, 1].
Entrée :
operations = ["deposit -5", "withdraw 0", "deposit 10"]
Sortie attendue :
expected = [10, 2]
Entrée :
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};
Sortie attendue :
std::vector<long long> expected = {10, 2};
Entrée :
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};
Sortie attendue :
long[] expected = new long[] {10, 2};
Explication
Le dépôt négatif et le retrait nul sont refusés ; le dernier dépôt réussit : [10, 2].
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Gardez le solde privé et modifiez-le seulement dans deposit et withdraw.
Indice 2
Refusez d'abord les montants nuls ou négatifs.
Indice 3
Un retrait ne peut pas faire passer le solde sous zéro.
Complexité attendue
temps O(nombre d'opérations), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.