Já que você já entende a prática, agora é a hora certa de se aprofundar na teoria.
Recomendo estudar, em Algoritmos e Estruturas de Dados, tópicos como (em ordem de prioridade e dificuldade):
- Algoritmos de Pesquisa (binária, sequencial, etc);
- Algoritmos de Ordenação/Sorting (existem VÁRIOS);
- Estruturas de Dados Flexíveis (fila e pilha / FIFO e LIFO);
- Árvores Binárias (importantíssimo! busca em profundidade, busca em largura...);
- Tabelas Hash.
Vi que você citou estar estudando Java.
Segue meu repositório de AED's que fiz em Java.
Você pode utilizá-lo para guiar seus estudos.
E quando digo "estudar", quero dizer estudar MESMO.
Entender a complexidade dos algoritmos, reconhecer em quais casos é mais vantagem utilizar o algoritmo X ou Y.
Inclusive, em entrevistas técnicas de emprego, além de cobrarem a implementação de códigos, costumam pedir também a dissertação sobre a complexidade dos algoritmos que você implementou.
Dito isso:
Estude Análise da Complexidade de Algoritmos.
E, dito isso também:
Estude e faça LeetCodes.
O canal desse cara é sensacional pra isso.