Skip to content

Problem sets designed to provide practice of elementary to advanced algorithm design patterns and paradigms

License

Notifications You must be signed in to change notification settings

charlottekies/algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

This project is a collection problem sets designed to provide practice of elementary to advanced algorithm design patterns and paradigms.

Each problem will come with a set of unit tests that test the robustness of your solutions.

The goal is to provide a structured syllabus to bootcamp graduates that can be used to systematically learn algorithm patterns commonly taught as part of a traditional CS degree.

Familiarity with these patterns will improve performance in whiteboarding interviews. The idea is that once you know and understand how to implement these patterns with ease, you will more quickly recognize problem types and common solutions for them in a whiteboarding interview.

Current Structure

This project is a work-in-progress, and I am currently developing the following problem sets and corresponding unit tests, for the following categories of algorithms:

> searching algorithms
    > linear 
    > non-linear

> sorting algorithms
    > comparison-based
    > non-comparison-based

In each folder of algorithm patterns, you'll find entire classes dedicated to studying just one pattern, and contains the following:

1. 1-5 simple problem(s) asking you to implement an algorithm using that pattern
2. 5-10 challenge problems that can be solved using that pattern

Future Plans

I intend to grow this collection of problem sets to include every critical algorithm type necessary for competing at the highest level in technical interviews. In the future, I intend to include the following categories of problem sets:

Existing sets:
> sorting algorithms
> searching algorithms

Future additional sets:
> optimization algorithms
    > Greedy
    > Dynamic
    > Backtracking
> graph algorithms
    > traversal
    > shortest path
> string algorithms
    > searching
    > pattern matching
> math algorithms
    > arithmetic
    > algebra
    > number theory
> geometry algorithms
> bit manipulation
> randomized algorithms

How to use

This repository includes no implementations, but does include unit tests for each problem ready to test your solutions!

  • Clone the repository
  • Begin implementing your solutions
  • Run tests in one of 5 ways
    • Right click test > java folder to run all tests
    • Right click any test class to run all tests in a file
    • Click the play button next any individual test to run a single test (in IntelliJ)
    • Run Main.class, found in test > java > org.example
    • Run the command mvn test

Recommended Order of Study

Fundamental

Knowledge of these algorithms will strongly assist you in your early career. Study these in preparation for your entry-level or early career roles, in this order.

  • Sorting
  • Searching
  • String

Intermediate to Advanced

Study optimization and graph algorithms when preparing for interviews for mid-level roles.

  • Optimization
  • Graph

Niche

These may appear in mid and senior level interviews, and commonly in interviews for systems engineers, robotics engineers, graphics engineers, and finance roles

  • Math
  • Bit
  • Geometry
  • Randomized

About

Problem sets designed to provide practice of elementary to advanced algorithm design patterns and paradigms

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages