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