Je ne sais pas a quel niveau tu te situe, donc c'est difficile de repondre a la question. Donc voici une reponse un peu generale.
En algo il n'y a typiquement que 3 questions qui se pose sur un probleme:
1/ Quel est le probleme? Et quelle est la propriete qu'une solution doit avoir pour repondre au probleme. Cette propriete est formelle et exprime mathematiquement.
2/ Comment est ce que mon algorithme construit une solution qui a la propriete qui repond au problem. La seule facon de repondre a cette question est de produire une preuve d'exactitude de l'algorithme.
3/ Quelles sont les proprietes derives de l'algorithme et comment les ameliorer? Typiquement combien de memoire il faut, complexite de l'algorithme, ce genre de chose. "Comment les ameliorer" vient typiquement soit d'une analyse plus precise de l'algorithme, d'un changement de structure de donne pour calcule la meme chose, mais en mieux, soit d'une approche completement differente.
La plupart des debutants qui ont des problemes en algo les recontrent parce qu'ils essayent de repondre a la question 3 sans repondre aux question 1 et 2. Les question 1 et 2 sont beaucoup important que la question 3 dans 90% des cas parceque tu ne peux pas commencer a approcher la question 3 sans repondre aux questions 1 et 2.
Par exemple, si tu regardes les gens qui font de l'IA de nos jours, ils s'interessent aux question 1 et 2, mais pas forcement a la question 3. Si tu regardes les gens qui font de la recherche operationalle (logistique) ils s'interessent plus aux question 1 et 2, qu'a la question 3.
Une fois que les gens ne sont plus compleetment debuttant, l'erreur principale qu'ils font est de prendre un probleme et de chercher une solution sur le web. Trouver et comprendre une solution c'est bien et il y a des moments ou il faut faire ca pour avancer. Mais regarder le probleme par toi meme et construire une solution, meme si ce n'est pas la meilleur aide enormement a comprendre la structure du probleme. Une fois que tu lis une meilleure solution, tu sauras mieux comment la solution fonctionne et pourquoi elle fonction. A ce moment, tu pourras refaire les preuves et analyses du probleme par toi meme sans avoir a te referer a aucun document externe.
En terme de reference. Le Cormen est complet, mais personnellement je le trouves difficile a lire apart par des gens qui ont ete forme en math et/ou en algo; avant un niveau L2 en math et/ou info, c'est vraiment dur a lire. Pour un debuttant, je prefere recommender le livre de Levitin. Et a niveau moins formel, celui de tardos/kleinberg qui est plutot bien.
Pour repondre a la question 3 qui revient a dire: comment resoudre un probleme "mieux" qu'une autre solution qui marche deja, ce qu'il faut est:
Connaitre (et savoir reconstruire a froid) les structures de donnees classiques (et algo associe, y compris les invariants et preuves):
-tableau
-liste chaine (et variantes)
-les structures arborescentes: arbres, arbres binaires, arbres de recherches, tas
-tables de hashages
-graphes
Connaitres les techniques standard de construction d'algorithme (et savoir les appliquer sur plusieurs probleme standard, y compris reconstruire leur preuve, sans avoir a se referer a des documents externes):
-brute force
-divide and conquer (y compris les variantes classiques: decrease and conquer, transform and conquer)
-programmation dynamique
-algorithmes glouton
Et ces choses la correspondent en gros a un niveau L3/M1 en fonction de la profondeur ou tu vas.
Finalement, pour un probleme probleme en particulier, il faut souvent comprendre les problemes qui ressemblent parceque souvent les techniques qui s'appliquent a un probleme peuvent s'adapter aux problemes qui ressemblent.