Oggi vediamo il seguente esercizio di LeetCode:

There is a programming language with only four operations: ++X, X++, –X, X–. Given an array of strings operations, return the final value of X after performing all the operations starting from X = 0.

Possiamo risolvere questo problema simulando direttamente l’esecuzione delle operazioni, come nel codice proposto.

L’idea chiave è:

  • inizializziamo una variabile value a 0
  • scorriamo l’array di operazioni una per una
  • se l’operazione è incremento (++X o X++), aumentiamo il valore di 1
  • altrimenti, per le operazioni di decremento (–X o X–), diminuiamo il valore di 1
  • continuiamo fino alla fine dell’array
  • restituiamo il valore finale

Questo approccio permette di ottenere una complessità O(n), dove n è il numero di operazioni, ed è efficiente perché simula direttamente il comportamento richiesto senza strutture dati aggiuntive o trasformazioni intermedie.

function finalValueAfterOperations(operations: string[]): number {
    let value = 0;
    operations.forEach((operation: string ) => {
        if(operation == "X++" || operation == "++X"){
            value++;
        }else{
            value--;
        }
    })
    return value;

};