Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Algorithms and Data Structures

English | 简体中文

Overview

Essential algorithms and data structures that form the foundation of efficient problem-solving in computer science. Covers complexity analysis, sorting, searching, graph algorithms, dynamic programming, and fundamental data structures.

Prerequisites

Required:

  • Programming - Strong programming fundamentals needed to implement and analyze algorithms

Recommended:

  • Mathematics for CS - Mathematical maturity helps with complexity analysis and proofs

Programming Languages

  • Any modern language (Intermediate) - Algorithms can be implemented in C, Java, Python, etc.
  • Focus on understanding concepts rather than language-specific syntax

Recommended Resources

Textbooks

  • The Algorithm Design Manual by Steven Skiena (3rd Edition)

    • Practical approach to algorithmic problem-solving
    • War stories demonstrate real-world applications
    • Excellent balance of theory and practice
    • Level: Intermediate
    • ISBN: 978-3030542559
  • Introduction to Algorithms (CLRS) by Cormen, Leiserson, Rivest, and Stein

    • Comprehensive reference text
    • More proof-heavy than Skiena
    • Level: Intermediate to Advanced
    • Use selectively as reference material

Video Lectures

Steven Skiena's Algorithm Design Lectures

  • Instructor: Steven Skiena
  • Institution: Stony Brook University
  • Platform: YouTube
  • URL: Course playlist
  • Description: Engaging lectures covering practical algorithm design and analysis
  • Pairs with: The Algorithm Design Manual

Tim Roughgarden's Algorithms Specialization

  • Instructor: Tim Roughgarden
  • Institution: Stanford University
  • Platform: Coursera
  • Description: Four-course specialization covering divide-and-conquer, graph algorithms, greedy algorithms, and dynamic programming
  • Well-structured alternative to Skiena's course

Online Resources

  • LeetCode - Practice problems for technical interviews and algorithmic thinking
  • VisuAlgo - Algorithm visualizations

Exercises

Practice Problems

  • Source: LeetCode problems

  • Difficulty: Easy to Hard

  • Estimated time: 100+ random problems (200+ hours)

  • Topics: Arrays, linked lists, trees, graphs, dynamic programming, sorting, searching

  • Strategy: Solve approximately 100 random problems to build comprehensive understanding

  • Source: The Algorithm Design Manual exercises

  • Difficulty: Intermediate

  • Topics: Design and analysis of algorithms across all major categories

Projects

  • Implement major data structures from scratch (hash tables, balanced trees, graphs)
  • Solve algorithmic challenges on competitive programming platforms

Study Notes

[Personal notes and key insights can be added here during study]

Progress Tracking

  • Completed core textbook (Skiena or equivalent)
  • Watched primary video lecture series
  • Solved 100+ LeetCode problems across difficulty levels
  • Implemented fundamental data structures
  • Review and reinforcement