Published on

My Journey in Data Structures, Algorithms, and LeetCode (Part II)

Authors

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.