Problema
L'incapsulamento mantiene privati i dati di un oggetto e li modifica solo tramite metodi che fanno rispettare le regole. Il saldo di un conto bancario può cambiare solo tramite deposit e withdraw.
Inizia con un saldo di 0 e processa le operazioni, ciascuna deposit <amount> o withdraw <amount>:
- Un importo che è 0 o negativo viene rifiutato.
- Un prelievo più grande del saldo attuale viene rifiutato.
- Altrimenti il saldo cambia.
Implementa bank_account_rules(operations).
Input
operations: Le operazioni, nell'ordine.
Output
Restituisci [final_balance, rejected_count].
Vincoli
0 ≤ numero di operazioni ≤ 100,000
−10^9 ≤ importo ≤ 10^9
Esempi
Input:
operations = ["deposit 100", "withdraw 30", "withdraw 200"]
Output atteso:
expected = [70, 1]
Input:
std::vector<std::string> operations = {"deposit 100", "withdraw 30", "withdraw 200"};
Output atteso:
std::vector<long long> expected = {70, 1};
Input:
string[] operations = new string[] {"deposit 100", "withdraw 30", "withdraw 200"};
Output atteso:
long[] expected = new long[] {70, 1};
Spiegazione
100 − 30 lascia 70; prelevare 200 andrebbe oltre il saldo, quindi viene rifiutato: [70, 1].
Input:
operations = ["deposit -5", "withdraw 0", "deposit 10"]
Output atteso:
expected = [10, 2]
Input:
std::vector<std::string> operations = {"deposit -5", "withdraw 0", "deposit 10"};
Output atteso:
std::vector<long long> expected = {10, 2};
Input:
string[] operations = new string[] {"deposit -5", "withdraw 0", "deposit 10"};
Output atteso:
long[] expected = new long[] {10, 2};
Spiegazione
Il deposito negativo e il prelievo zero vengono entrambi rifiutati; l'ultimo deposito riesce: [10, 2].
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Tieni il saldo privato e cambialo solo in deposit e withdraw.
Suggerimento 2
Rifiuta prima di tutto gli importi pari a 0 o negativi.
Suggerimento 3
Un prelievo non può portare il saldo sotto zero.
Complessità attesa
tempo O(numero di operazioni), spazio aggiuntivo O(1)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.