General
- NeetCode β’ Courses and guided practice to help build pattern recognition skills (see his YouTube channel as well) π§©
- How to effectively learn Algorithms β’ Practice prerequisite topics first β’ NeetCode πΊ
- Interview Cake β’ Programming interview questions + help getting job offers π§©
- AlgoExpert β’ The ultimate resource to prepare for coding interviews π§©
- algorithms β’ Code / tests for algorithm and data structure lessons using TypeScript / JavaScript β’ Basarat Ali π οΈ
- Build Algorithms using Typescript β’ Egghead course by Basarat Ali π§βπ
- The Unfair Way I Got Good At LeetCode β’ Arman Manazir πΊ
Patterns
- Leetcode 101: The 14 Patterns β’ Vinz Angelo Madrigal πΊ
- Leetcode 101 slides β’ Vinz Angelo Madrigal π
- Make a series that goes through these 14 patterns one at a time?
- what it is
- what problems it applies to
- an example of solving a question with it
- links to other questions that use the same solution
- Links to the extra help links at the end of the video
- Credit to the video creators (and link to the video itself)
- End series with a 15th post summarizing how to choose the right solution pattern based on the question (with links to each
- 14 Patterns to Ace Any Coding Interview Question β’ Fahim ul Haq π
- The Ultimate Strategy to Preparing for the Coding Interview β’ Arslan Ahmad π
- Leetcode Patterns β’ Sean Prashad π
- LeetCode Isnβt Real β’ Memorizing solutions is very different from building problem solving skills; analogy of memorizing the grade school multiplication method vs understanding how it works; memorize a few core algorithms like DFS, BFS and then practice identifying which algorithm applies to each problem you see β’ NeetCode & The Primagen πΊ
Strings
- Coding Interview Practice: Bracket Matching β’ Basarat Ali πΊ
- Coding Interview Practice: Longest Consecutive Character β’ Basarat Ali πΊ
- πΊ One Minute Utilities for JavaScript Strings β’ 6 minute video by Basarat Ali showing quick functions for reversing a string, checking if a string is a palindrome, changing the case of a stringβs first character, splitting a string onto muktiple lines, replacing a character in a string, removing whitespace, escaping and unescaping HTML characters, and repeating a string n times
Numbers
- πΊ FizzBuzz programming interview: What makes it hard? Simple solution πΉ β’ 5 minute video by Basarat Ali showing how to implement FizzBuzz simply and then refactor it
- πΊ FizzBuzz: One Simple Interview Question β’ 7 minute video by Tom Scott showing how to solve Fizz buzz
Arrays
- πΊ One Minute Utilities for JavaScript Arrays β’ 5 minute video by Basarat Ali showing quick functions for checking in an input is an array, checking if two arrays are equal, return the min, max, sum or average value in an array of numbers, joining two arrays, returning the arrays unique items, return an array that inckudes all numbers in a range, and flatten an array of arrays into a single array
Sorting
- Algorithms: Bubble Sort β’ Kyle Shevlin π
- Sorting Algorithms Explained Visually β’ Beyond Fireship πΊ
Searching & Pathfinding
- πΊ Tree Algorithms β’ 8 video playlist by William Fiset
- πΊ Binary Search algorithm in JavaScript β’ 11 minute video by Leigh Halliday showing how to apply binary search to a sorted JS array of numbers
- πΊ Algorithms: Binary Search on Trees and Lists β’ 14 minute video by ThePrimeagen
- π The Algorithms Guide: Learn Binary Search in JavaScript β’ Free course by Jonathan Lee Martin and Scrimba that shows how to code six different binary search algorithms in 10 interactive screencasts
- πΊ A* Pathfinding (E01: algorithm explanation) β’ 12 minute video by Sebastian Lague explaining the A* pathfinding algorithm
Recursion
- πΊ Recursion: How to FINALLY understand recursion β’ 13 minute video by ThePrimeagen that uses a maze solver as an example
- πΊ Algorithms Explained β minimax and alpha-beta pruning β’ 11 minute video by Sebastian Lague explaining the minimax algorithm and how to use alpha-beta pruning to make it faster
- Recursion for Beginners β’ An introduction to recursion and the Python-specific functionality for recursion β’ Al Sweigart πΊ
Dynamic Programming
- Dynamic Programming β’ 10 video playlist by William Fiset πΊ
- Dynamic Programming is not Black Magic β Quentin Santos π
Optimizing
- going fast is about doing less β’ leedoo demonstrates how to gradually reduce the runtime of an advent of code solution from > 2 mins to < 1 sec πΊ
- Quadratic algorithms are slow (and hashmaps are fast) β’ Julia Evans π
FizzBuzz
Given a number, n, for each integer i in the range from 1 to n inclusive, print one value per line as follows:
- If i is a multiple of both 3 and 5, print FizzBuzz
- If i is a multiple of 3 (but not 5), print Fizz
- If i is a multiple of 5 (but not 3), print Buzz
- If i is not a multiple of 3 or 5, print the value of i
function fizzBuzz(n: number): void {
for (let i = 1; i <= n; i++) {
let result: number | 'Fizz' | 'Buzz' | 'FizzBuzz' = i
if (i % 15 === 0) {
result = 'FizzBuzz'
} else if (i % 5 === 0) {
result = 'Buzz'
} else if (i % 3 === 0) {
result = 'Fizz'
}
console.log(result)
}
}
Inbox
-
aocrunner - npm - helpful boilerplate for solving advent of code puzzles without needing to set anything up
-
Visualizing Data Structures and Algorithms in VS Code - demo of using a diagramming extension + the debugger to visualize the values of your data structure as your algorithm runs (helpful for βgettingβ what the algo is doing + debugging why it isnβt working)
-
Projects Every Programmer Should Try β’ text editor, 2D game, compiler, operating system, spreadsheet, game console emulator β’ The Primeagen πΊ
-
Data Structures and Algorithms in JavaScript | egghead.io β’ Kyle Shevlin πΊ
-
Binary Search Animated - NeetCode
-
Mastering Dynamic Programming - How to solve any interview problem (Part 1) - Tech with Nikola
-
teivah/algodeck: An Open-Source Collection of 200+ Flash Cards to Help You Preparing Your Algorithms & Data Structures Interview π― β’ Teiva Harsanyi π§βπ»
-
Learn Data Structures and Algorithms - Programiz