In questa prima parte del corso andremo a vedere quali sono le doti più importanti da avere per essere in grado di risolvere vari tipi di coding challenge per migliorare nella programmazione competitiva
Una delle skill più importanti nel design degli algoritmi è il sapere riconoscere come il tempo di esecuzione di un algoritmo cambia rispetto alle dimensioni dell'input. La notazione O-Grande (In inglese Big-O) ci permette di categorizzare vari algoritmi in base al loro tipo di cambiamento nel tempo di esecuzione rispetto alle dimensioni dell'input. Per esempio, se consideriamo due algoritmi: Uno raddoppia il tempo di esecuzione ogni volta che l'input raddoppia e l'altro raddoppia il tempo di esecuzione ogni volta che l'input aumenta di uno. La notazione O-Grande ci permette di distinguere i due algoritmi e decidere quale di questi sia il più efficiente o scalabile..
Prepararsi per un colloquio informatico significa essere pronti a rispondere domande sulla teoria. Anche se questa poi non viene messa in pratica, molte compagnie usano domande teoriche sull'informatica come misura delle conoscenza nel campo del candidato. Per questo bisogna essere in grado di rispondere a domande su argomenti come: Strutture dati, System design, Analisi di algoritmi, etc.. In questa guida cominciamo una serie sulle Strutture dati con la Linked List o Lista Concatenata.
Come parte del corso Algoritmi e strutture dati, in questa guida vi verrà introdotto il concetto di un pila (Stack). In più vedrete come implementare una pila in Java e vedrete in quali tipi di problemi è opportuno usarla.