Weekly Lectures

These are live lectures given with varying degrees of preparation to a group of Ian's alumni. For everyone's benefit, they are posted here, but be aware that there are certainly errors in these videos. If you spot any, please feel free to email Ian.

Live Lecture: Building an LRU Cache

In this video we discuss the simplest implementation of a Hash Map. We discuss the remarkable big-oh properties of this incredibly useful data structure, as well as considering the nuances of average, worst and amortized cost runtime analysis.

Live Lecture: Validate Binary Search Tree

In this video we will solve LeetCode 98. We start from foundational understanding of BSTs, and build a recursive algorithm that traverses the BST from root to leaf, checking for conditions that would make the tree invalid!

Live Lecture: Convert Sorted Array to BST

In this video we solve LeetCode problem 108. In this solution we reason our way through building a height balanced binary search tree from a sorted input array. We show how the naturally recursive structure of BSTs leads to a straightforward algorithm. We also review the array representation of BSTs.

Live Lecture: Detect Cycle in Linked List

In this video we will solve Leetcode problem 142. We discuss a solution that uses two pointers progressing at different speeds through the linked list. When the two pointers arrive at the same node, we can be sure we detected a cycle, and we can use some simple math to determine exactly how long the cycle is!

Live Lecture: Group Linked List Nodes by Cardinality

In this video we will solve Leetcode problem 328. We discuss the runtime complexities of arrays and linked lists, and present a solution that utilizes the functionality and characteristics of linked lists.