- Published on
My Journey in Data Structures, Algorithms, and LeetCode (Part II)
- Authors
- Name
- Huan Zhang
- @zhkrob
Graduate Studies and Rekindling Interest
In 2019, my engagement with LeetCode was limited due to applications for a second master's degree. At that point, I shifted my academic interest from hardware-focused research to software and artificial intelligence. I was accepted into the Master of Science in Artificial Intelligence program at Nanyang Technological University (NTU).
With the onset of the Covid-19 pandemic, my courses moved online. Considering future job opportunities, I realized data structures and algorithms would be essential skills. Thus, I returned to LeetCode, predominantly solving problems in C++, despite primarily using Python for coursework. Initially, I followed a recommended problem list, which proved quite challenging at first. Nonetheless, I solved around 300 LeetCode problems that year and participated in several contests. Notably, I successfully completed all four questions in Weekly Contest 213—a memorable milestone. Additionally, I participated in Google Kick Start contests, though my performance highlighted the need for further practic.
Transition to Java and Professional Career
After graduating from NTU, I secured a job in Singapore, where my professional work required proficiency in Java. Consequently, I transitioned from C++ to Java. During 2021 and early 2022, my LeetCode practice decreased significantly as I focused primarily on AWS technologies and job-related responsibilities. My practice was mainly limited to reinforcing my familiarity with Java syntax and fundamental problem-solving techniques.
Rediscovering Algorithmic Passion
In late 2022, my passion for algorithms reignited, driving me back to LeetCode. This time, I began with the resources from labuladong, which helped me quickly regain momentum. Throughout 2023, I actively participated in contests and achieved notable rankings. My renewed enthusiasm carried into 2024 and 2025, initially motivated by interview preparation but evolving into genuine personal interest. Currently, I follow an excellent curated problem list by "灵神," a top competitive programmer and teacher in China. To date, I have solved over 800 problems. Yet, it's not merely the number that matters, but rather the insights and deeper understanding I've gained through this rigorous journey. Looking ahead, I am considering exploring platforms like Codeforces once I feel confident tackling most of LeetCode's hard problems.
Important Algorithmic topics
Throughout my journey, I have found certain topics particularly important (try to keep updating):
For Interviews:
- Two Pointers
- Depth-First Search (DFS)
- Breadth-First Search (BFS)
- Trees
- Linked Lists
- Graph Theory
- Basic Data Structures (Hash Map, Hash Set)
- Binary Search
(Future interviews might include even more challenging topics—I've already encountered problems involving the Hierholzer algorithm!)
For LeetCode Contests:
- Dynamic Programming (like Digit DP)
- DFS and BFS
- Advanced Graph Algorithms (like Dijkstra, Floyd)
- Mathematics (with many complex subtopics)
- Greedy Algorithms
- String Algorithms (like KMP, Z-function)
Conclusion
My continuous exploration of algorithms and data structures has significantly shaped my career path and personal interests. Although my achievements so far fill me with pride, I know I’m still at the very beginning of this algorithmic journey. Reflecting on this motivates me to keep learning and growing, and to ultimately fulfill the aspirations I set for myself back in high school. The road ahead is exciting and full of potential, and I look forward to sharing more insights and experiences along the way.