Skip to content

Commit 8b84eb3

Browse files
authored
Update README.md
1 parent 9864aba commit 8b84eb3

File tree

1 file changed

+160
-5
lines changed

1 file changed

+160
-5
lines changed

README.md

Lines changed: 160 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,165 @@
11
# 70-JavaScript-Challenges---Data-Structures-and-Algorithms
2-
70+ JavaScript Challenges - Data Structures and Algorithms, by packt publishing
2+
Traversy JS Challenges, Data Structures, and Algorithms
3+
This is a sandbox for my upcoming JavaScript challenges, data structures, and algorithms course. Just about all of the concepts that are included, also exist in other languages. So, if you are not a JavaScript developer, you can still follow along and learn from this course/repo.
34

4-
Unlock the power of data structures and algorithms (DSA) with our comprehensive video course. From basics to advanced topics, embark on a hands-on journey through real-world coding challenges and optimizations.
5+
This course/repo goes over everything from basic loop challenges, recursion, complexity, data structures, and algorithms. It is meant to be a complete course on the subject. It is not meant to be a course on JavaScript fundamentals. You should already know the basics of JavaScript.
56

6-
This course seamlessly interweaves foundational knowledge with hands-on coding challenges to ensure a thorough grasp of the subject. Start with an introduction to DSA's significance, and then immerse yourself in hands-on exercises like "Hello World" to ease into the coding mindset. Delve deeper as you explore arrays, manipulating strings, solving common challenges. Further on, refine your coding finesse as you navigate through hash tables, maps, and sets, crafting elegant solutions to intricate problems like anagram grouping.
7+
File Structure
8+
Each folder includes:
79

8-
But this course doesn't stop at surface-level coding practices. Dive into the depths of intricate data structures like stacks, queues, and linked lists. Experience the beauty of tree structures, binary search trees, and graphs, understanding their traversal and practical applications. Writing code is just half the battle. Understanding the efficiency and optimization of your code is paramount. Grasp the concepts of time and space complexity, and familiarize yourself with iconic sorting algorithms, from bubble sort to quick sort.
10+
readme.md - The challenge/code instructions. This also includes hints, tests and a dropdown with the solution code as well as the explanation of the solution code.
11+
[name].js - This is your working file. It has the name of the function and the function is exported. No parameters are passed to the function. That is up to you to add.
12+
[name]-run.js - File to run the code manually. The function is already imported and called with expected parameters.
13+
[name]-solution.js The solution code with heavy commenting. Some challenges have multiple solutions. If you want the solution without comments, look in the readme.md file.
14+
[name]-test.js - Jest tests for the solution code. You will need to rename this file to [name].test.js to run the tests.
15+
Learning Modules/Lessons
16+
Some lessons/modules are not challenges, they are more like mini-lessons. I don't just throw you a challenge using a new concept (Trees, Stacks, Bubble Sorts, etc) without explaining it first. I try to explain the concept and then give you a challenge to practice or implement it. So some folders will not have a challenge, just a readme file.
917

10-
By the end of this course, you will have journeyed from the basic constructs of data structures to the intricate maze of algorithms, all the while understanding their real-world applicability and performance nuances.
18+
Running Tests
19+
In order for the Jest tests to run, you need to rename the test file to [name].test.js. For example, if you are working on the hello-world challenge, you need to rename the hello-world-test.js file to hello-world.test.js. This is because Jest looks for files with the .test.js extension.
20+
21+
Run the command npm run test from the root directory and it will run all the tests.
22+
23+
These Don't Have to be "Challenges"
24+
Some people, such as myself are not great at doing this stuff off the top of their head. Even though most of the code is setup as a challenge, you can certainly just follow along with the course and/or just study the solutions and learn from them.
25+
26+
You can use the tests to see if your code passes, but use the run files to run the code manually. This is so that you can experiment, console.log, etc.
27+
28+
Getting Started
29+
Clone the repo
30+
Run npm install
31+
Run npm run test to run the tests. Again, you will need to rename the test files and replace the -test with .test to run the tests.
32+
Index of Challenges/Lessons
33+
01. Basic Challenges 1
34+
These are mostly challenges that have to do with loops, conditionals, and string manipulation. I do not go over fundamentals like "what is a for loop". You should already know the basics of JavaScript.
35+
36+
Hello World Test Challenge
37+
Get Sum Test Challenge
38+
Calculator
39+
Count Occurrences
40+
Find Max Number
41+
Title Case
42+
Reverse String
43+
Palindrome
44+
Count Vowels
45+
Remove Duplicates
46+
02. Basic Challenges 2
47+
These are more challenges that have to do with iteration. They are slightly harder than the first set of challenges.
48+
49+
FizzBuzz Array
50+
Array Intersection
51+
Display Likes
52+
Find Missing Number
53+
Find Missing Letter
54+
Are All Characters Unique
55+
First Non-Repeating Character
56+
Dice Game Simulation
57+
Format Phone Number
58+
Validate Email
59+
03. High Order Array Methods
60+
The next set of challenges/lessons will have to do with high order array methods such as map, filter, reduce, sort, etc. Even though most of these can be done with a for loop, I want you to practice using these methods.
61+
62+
Simple Examples
63+
Sum Of Even Squares
64+
Calculate Total Sales
65+
Highest Scoring Word
66+
Valid Anagrams
67+
HashTag Generator
68+
Valid IPv4 Address
69+
Analyze Car Milage
70+
Password Validator
71+
Find Missing Letter Refactor
72+
04. Recursion
73+
The next batch of challenges/lessons will have to do with recursion. We will first talk about what recursion is and then we can look at some challenges.
74+
75+
Recursion Intro (Count Down)
76+
Unwinding (Sum Up To)
77+
Reverse String Recursion
78+
Fibonacci Sequence
79+
Factorial
80+
Power
81+
Array Sum
82+
Number Range
83+
Flatten Array
84+
Permutations
85+
05. Complexity
86+
This is more of a learning section than a challenge section. We will talk about Big O notation and how to calculate the time complexity of an algorithm. We will also talk about space complexity and how to calculate that as well. We will talk about the different types of complexity such as constant, linear, quadratic, etc.
87+
88+
What Is Time Complexity?
89+
Big O Notation
90+
Constant Time Complexity
91+
Linear Time Complexity
92+
Quadratic Time Complexity
93+
Logarithmic Time Complexity
94+
Space Complexity
95+
Max Subarray Quadratic
96+
Sliding Window Technique
97+
Space Complexity
98+
06. Hash Tables, Maps & Sets
99+
In this section, we will start to look at data structures. We will start with a data structure called a hash table. This will include maps and sets, which are built-in JavaScript data structures that are similar to hash tables. We will also create a custom hash table class and use it in a couple challenges.
100+
101+
What Are Data Structures?
102+
Hash Table Intro
103+
Maps
104+
Word Frequency Counter
105+
Phone Number Directory
106+
Anagram Grouping
107+
Sets
108+
Symmetric Difference
109+
Two Sum
110+
Longest Consecutive
111+
Custom Hash Table
112+
Word Instance Counter
113+
Add getValues() Method
114+
Add getValues() Method
115+
07. Stacks, Queues & Linked Lists
116+
In this section, we will look at working with data structures such as stacks, queues, and linked lists. We will also look at fast and slow pointers.
117+
118+
What Is A Stack?
119+
Stack Implementation
120+
Reverse String With Stack
121+
Balanced Parentheses
122+
What Is A Queue?
123+
Queue Implementation
124+
Reverse String With Queue
125+
Palindrome With Queue & Stack
126+
What Is A Linked List?
127+
Linked List Implementation
128+
Reverse String With Linked List
129+
Fast & Slow Pointers
130+
Find Middle
131+
What Is A Doubly Linked List?
132+
Doubly Linked List Implementation
133+
Find Pair Sum
134+
08. Binary Trees & Binary Search Trees & Graphs
135+
In this section, we will look at trees and graphs. We will start with binary trees and binary search trees. We will also look at graphs and graph traversal.
136+
137+
What Is A Tree?
138+
Tree Node Class
139+
Depth First Traversal
140+
Depth First Traversal Recursive
141+
Breadth First Traversal
142+
Maximum Depth
143+
What Is A Binary Search Tree?
144+
Binary Search Tree Implementation
145+
Validate BST
146+
What is a Graph?
147+
Adjacency Matrix & Adjacency List
148+
Graph Implementation
149+
Graph Traversal
150+
Graph Depth First Traversal
151+
Graph Breadth First Traversal
152+
09. Sorting Algorithms
153+
In this section, we will get into sorting algorithms. We will start with bubble sort, which is very popular in interviews. We will also look at selection sort, insertion sort, merge sort, and quick sort.
154+
155+
What Are Sorting Algorithms?
156+
Bubble Sort Algorithm
157+
Bubble Sort Implementation
158+
Insertion Sort Algorithm
159+
Insertion Sort Implementation
160+
Selection Sort Algorithm
161+
Selection Sort Implementation
162+
Merge Sort Algorithm
163+
Merge Sort Implementation
164+
Quick Sort Algorithm
165+
Quick Sort Implementation

0 commit comments

Comments
 (0)