This repository contains common data structures and algorithms found in CTCI. Implementations are written in TypeScript and Go.
This codebase is meant to be used with VS Code.
- Clone the repository
cd ctci && code .
- yarn 1.7.x
- Jest 22.0.0+
- Go 1.10.x
- Ruby 2.4.0
- rspec 3.8
- Bundler 2.0.x
- Install dependencies by opening the command palette (Ctrl/Cmd + P) and running
task Install TypeScript dependencies
- Run unit tests by opening the command palette and running
task Jest unit tests
- See coverage results by opening
ctci/typescript/coverage/lcov-report/index.html
in your browser
Run unit tests by opening the command palette and running task Go unit tests
- Install dependencies by opening the command palette (Ctrl/Cmd + P) and running
task Install Ruby dependencies
- Run unit tests by opening the command palette and running
task Ruby unit tests
- Coverage results will appear in the terminal
All algorithms include time and space complexity analysis. These values make the following assumptions:
- String concatenation time complexity for JavaScript and Go are O(n).
- JavaScript objects and Go maps are implemented in a way similar to hash tables. That is, they support (key, value) pair storage with average O(1) time complexity for searching, insertion, and deletion. A hashmap implementation is provided for educational purposes but these built in data structures are used for simplicity.