This course is the first of a series. In this part, we'll be focusing on linear data structures. Part 2 is all about trees and graphs. Part 3 is about searching, sorting and string manipulation algorithms.

Here's what you're going to learn in the first part:

The Big O notation

Arrays

Linked Lists

Stacks

Queues

Hash Tables

This is the most comprehensive data structures and algorithms series online. Every example and exercise is picked from popular interview questions asked by Google, Microsoft, Amazon and other big companies.

**Getting Started**

**Linked Lists (54 m)**

- 1 Introduction 0 36
- 2 What are Linked Lists 4 33
- 3 Working with Linked Lists 3 24
- 4 Exercise Building a Linked List 1 25
- 5 Solution addLast 6 09
- 6 Solution addFirst 2 13
- 7 Solution indexOf 1 54
- 8 Solution contains 1 05
- 9 Solution removeFirst 4 23
- 10 Solution removeLast 4 40
- 11 Implementing size 4 15
- 12 Converting Linked Lists to Arrays 2 10
- 13 Cheat Sheets 1 12
- 14 Arrays vs Linked Lists 3 21
- 15 Types of Linked Lists 3 14
- 16 Exercise Reversing a Linked List 1 33
- 17 Solution Reversing a Linked List 9 00
- 18 Exercise Kth Node from the End 3 20
- 19 Solution Kth Node from the End 5 22
- 21 Summary 1 12

**Stacks (42 m)**

- 1 Introduction 0 31
- 2 What are Stacks 2 47
- 3 Working with Stacks 2 21
- 4 Exercise Reversing a String 0 41
- 5 Solution Reversing a String 5 01
- 6 Exercise Balanced Expressions 2 54
- 7 Solution A Basic Implementation 5 17
- 8 Solution Supporting Other Brackets 3 36
- 9 Solution First Refactoring 4 09
- 10 Solution Second Refactoring 5 50
- 11 Exercise Building a Stack Using an Array 0 47
- 12 Solution Implementing a Stack Using an Array 8 18
- 14 Summary 0 33

**Queues (53 m)**

- 1 Introduction 0 26
- 2 What are Queues 2 04
- 3 Queues in Java 5 12
- 4 Exercise Reversing a Queue 1 06
- 5 Solution Reversing a Queue 2 17
- 6 Exercise Building a Queue Using an Array 2 03
- 7 Solution A Basic Implementation 6 32
- 8 Solution Circular Arrays 5 54
- 9 Exercise Implementing a Queue Using a Stack 0 55
- 10 Solution Building a Queue Using a Stack 7 43
- 11 Priority Queues 1 53
- 12 Exercise Building a Priority Queue 3 57
- 13 Solution Building a Priority Queue 8 51
- 14 Solution Refactoring 3 02
- 16 Summary 0 57

**Hash Tables (68 m)**

- 1 Introduction 0 26
- 2 What are Hash Tables 2 44
- 3 Working with Hash Tables 6 06
- 4 Exercise Find the First Non repeated Character 0 54
- 5 Solution First Non repeating Character 7 39
- 6 Sets 2 23
- 7 Exercise First Repeated Character 0 32
- 8 Solution First Repeated Character 2 36
- 9 Hash Functions 5 55
- 10 Collisions 1 06
- 11 Chaining 1 40
- 12 Open Addressing Linear Probing 2 41
- 13 Open Addressing Quadratic Probing 1 29
- 14 Open Addressing Double Hashing 3 19
- 15 Exercise Build a HashTable 2 36
- 16 Solution put 6 07
- 17 Solution get 4 29
- 18 Solution remove 2 30
- 19 Solution Refactoring 11 04
- 21 Summary 1 25
- 22 Course Wrap Up 0 32

Ace your coding job interview. Learn to write better and faster code.

Boost Your Employability

Studied Computer Science - but never really understood the complex topic of data structures and algorithms?

Or maybe you’re a self-taught programmer, with little to no knowledge of this important topic.

Or perhaps you failed a job interview because you couldn't answer basic data structure and algorithm questions.

Data structures and algorithms are patterns for solving problems. Developers who know more about data structures and algorithms are better at solving problems.

That’s why companies like Google, Microsoft and Amazon, always include interview questions on data structures and algorithms. They want to assess your problem-solving skills. They don't care how many programming languages and frameworks you're familiar with

By the end of this course…

You’ll be able to:

- Ace your next coding interview
- Write better, faster code
- Become a better developer
- Improve your problem solving skills
- Master computer science fundamentals
- Implement all the essential data structures from scratch
- Master dozens of popular algorithms