Course Outline
Introduction
What is Big O
O(1)
O(n)
O(n^2)
O(log n)
O(2^n)
Space Complexity
Introduction
Understanding Arrays
Working with Arrays in Java
Exercise- Array Class
Solution- Creating the Class
Solution- insert()
Solution- removeAt()
Solution- indexOf()
Dynamic Arrays
Summary
Introduction
What are Linked Lists
Working with Linked Lists
Exercise- Building a Linked List
Solution- addLast
Solution- addFirst
Solution- indexOf
Solution- contains
Solution- removeFirst
Solution- removeLast
Implementing size()
Converting Linked Lists to Arrays
Cheat Sheets
Arrays vs Linked Lists
Types of Linked Lists
Exercise- Reversing a Linked List
Solution- Reversing a Linked List
Exercise- Kth Node from the End
Solution- Kth Node from the End
Summary
Introduction
What are Stacks
Working with Stacks
Exercise- Reversing a String
Solution - Reversing a String
Exercise- Balanced Expressions
Solution- A Basic Implementation
Solution- Supporting Other Brackets
Solution- First Refactoring
Solution- Second Refactoring
Exercise- Building a Stack Using an Array
Solution- Implementing a Stack Using an Array
Summary
Introduction
What are Queues
Queues in Java
Exercise- Reversing a Queue
Solution- Reversing a Queue
Exercise- Building a Queue Using an Array
Solution- A Basic Implementation
Solution- Circular Arrays
Exercise- Implementing a Queue Using a Stack
Solution- Building a Queue Using a Stack
Priority Queues
Exercise- Building a Priority Queue
Solution- Building a Priority Queue
Solution- Refactoring
Summary
Introduction
What are Hash Tables
Working with Hash Tables
Exercise- Find the First Non-repeated Character
Solution- First Non-repeating Character
Sets
Exercise- First Repeated Character
Solution- First Repeated Character
Hash Functions
Collisions
Chaining
Open Addressing- Linear Probing
Open Addressing- Quadratic Probing
Open Addressing- Double Hashing
Exercise- Build a HashTable
Solution- put()
Solution- get()
Solution- remove()
Solution- Refactoring
Summary
Course Wrap Up