Introduction
  • Coding interviews are tough - but beatable
Pointer and Arrays
  • Materials
  • Introduction to pointers
  • Pointer problems and arrays
  • Pointer arithmetic
  • Practice makes perfect - pointer problems
Strings are just pointers at heart
  • Working with strings
  • Pointer as arguments to functions
  • Practice makes perfect - string problems
Linked lists can be fun!
  • Pointers to pointers - bend your mind
  • Pointers to pointers - reassignment and modification
  • Get started with linked lists
  • Warming up to - they get tricky quickly
  • Cruising along - linked lists are fun aren't they?
  • Autopilot - linked lists are easy after all
  • Do not overlook the doubly linked list
Bit Manipulation
  • Bit Manipulation - I
  • Bit Manipulation - II
  • Useful Bit Manipulation Techniques
  • Get And Set The Nth Bit
  • Print And Count Bits
  • Reverse The Bits In An Integer
General programming problems - practice makes perfect
  • Starting up - palindromes and points within a distance
  • Play the Game Of Life and Break A Document Into Chunks
  • Run Length Encoding And Adding Numbers Digit By Digit
  • Sudoku Board Validation and Incrementing A Number In Another Number System
Big-O Notation, Sorting And Searching Algorithms
  • Performance and Complexity
  • Big O Notation
  • Big O Notation More Examples
  • Sorting Trade-Offs
  • Selection Sort
  • Bubble Sort
  • Insertion Sort
  • Shell Sort
  • Merge Sort
  • Quick Sort
  • Binary Search - search quickly through a sorted list
Recursion and the recursive sense
  • What is recursion - why is it so hard?
  • Binary search - implemented recursively
  • Find all subsets of a set
  • Check whether 2 binary trees are the same
  • Implement paint fill to color a region on screen
  • Build A car Given Tasks And Dependencies
  • Generate Anagrams Of A Word
  • Help A Rat Find It's Way Through a Maze
  • Place 8 Queens On A Board Safely
Stacks And Queues
  • Meet The Stack - Simple But Powerful
  • Building A Stack Using Java
  • Match Parenthesis To Check A Well Formed Expression
  • Find The Minimum Element In A Stack In Constant Time
  • Meet The Queue - A Familiar Sight In Everyday Life
  • The Circular Queue - Tricky But Fast
  • Build A Queue With Two Stacks
Binary Trees
  • Meet The Binary Tree - A Hierarchical Data Structure
  • Breadth First Traversal
  • Depth First - Pre-OrderTraversal
  • Depth First - In-Order and Post-Order Traversal
Binary Search Trees
  • The Binary Search Tree - an introduction
  • Insertion and Lookup in a Binary Search Tree
Binary Tree Problems
  • Minimum Value, Maximum Depth And Mirror
  • Count Trees, Print Range and Is BST
  • Has Path Sum, Print Paths, Least Common Ancestor
Heaps
  • The Heap Is Just The Best Way to Implement a Priority Queue
  • Meet The Binary Heap - It's A Tree At Heart
  • The Binary Heap - Logically A Tree Really An Array
  • The Binary Heap - Making It Real With Code
  • Heapify!
  • Insert And Remove From A Heap
Revisiting Sorting - The Heap Sort
  • Heap Sort Phase I - Heapify
  • Heap Sort Phase II - The Actual Sort
Heap Problems
  • Maximum Element In A Minimum Heap and K Largest Elements In A Stream
  • Merge K Sorted Lists Into One Sorted List Using A Heap
  • Find The Median In A Stream Of Elements
Graphs
  • Introducing The Graph
  • Types Of Graphs
  • The Directed And Undirected Graph
  • Representing A Graph In Code
  • Graph Using An Adjacency Matrix
  • Graph Using An Adjacency List And Adjacency Set
  • Comparison Of Graph Representations
  • Graph Traversal - Depth First And Breadth First
Graph Algorithms
  • Topological Sort In A Graph
  • Implementation Of Topological Sort