You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For a full list of all the exposed data structures and algorithms [see](src/index.js).
64
+
For a list of all available data structures and algorithms,[see index.js](src/index.js).
65
65
66
66
67
67
## Features
68
68
69
69
Algorithms are an essential toolbox for every programmer.
70
70
71
-
You usually need algorithms when you have to sort data, search for a value, transform data, scale your code to many users, to name a few.
72
-
Algorithms are just the step you follow to solve a problem while data structures are where you store the data for later manipulation. Both combined create programs.
71
+
You will need to mind algorithms runtime when you have to sort data, search for a value in a big dataset, transform data, scale your code to many users, to name a few.
72
+
Algorithms are just the step you follow to solve a problem, while data structures are where you store the data for later manipulation. Both combined create programs.
73
73
74
74
> Algorithms + Data Structures = Programs.
75
75
76
76
Most programming languages and libraries indeed provide implementations for basic data structures and algorithms.
77
-
However, to make use of data structures properly, you have to know the tradeoffs so you can choose the best tool for the job.
77
+
However, to make use of data structures properly, you have to know the tradeoffs to choose the best tool for the job.
78
78
79
79
This material is going to teach you to:
80
80
81
81
- 🛠 Apply strategies to tackle algorithm questions. Never to get stuck again. Ace those interviews!
82
-
- ✂️ Construct efficient algorithms. Learn how to break down problems in manageable pieces.
83
-
- 🧠 Improve your problem-solving skills and become a stronger developer by understanding fundamental computer science concepts.
82
+
- ✂️ Construct efficient algorithms. Learn how to break down problems into manageable pieces.
83
+
- 🧠 Improve your problem-solving skills and become a well-rounded developer by understanding fundamental computer science concepts.
84
84
- 🤓 Cover essential topics, such as big O time, data structures, and must-know algorithms. Implement 10+ data structures from scratch.
85
85
86
86
## What's Inside
87
87
88
88
All the code and explanations are available on this repo. You can dig through the links and code examples from the ([src folder](src)). However, the inline code examples are not expanded (because of Github's asciidoc limitations), but you can follow the path and see the implementation.
89
89
90
-
_Note: If you prefer to consume the information more linearly then the [book format](https://books.adrianmejia.com/dsajs-data-structures-algorithms-javascript/) would be more appropriate for you._
90
+
_Note: If you prefer to consume the information more linearly, then the [book format](https://books.adrianmejia.com/dsajs-data-structures-algorithms-javascript/) would be more appropriate for you._
91
91
92
-
The topics are divided into four main categories as you can see below:
92
+
The topics are divided into four main categories, as you can see below:
1. Test your answer on the simple example (mentally)
404
401
1. Optimize the solution
405
-
1. Write Code, yes, now you can code.
402
+
1. Write code. Yes, now you can code.
406
403
1. Test your written code
407
-
1. Analyse the complexity, both space and time and make sure to optimise further.
404
+
1. Analyse the complexity, both space and time, and make sure to optimize further.
408
405
409
406
Full details [here](book/part04-algorithmic-toolbox.asc)
410
407
@@ -462,8 +459,8 @@ and then discuss efficient sorting algorithms O(n log n) such as:
462
459
We are going to discuss the following techniques for solving algorithms problems:
463
460
-[Greedy Algorithms](book/content/part04/greedy-algorithms.asc): makes greedy choices using heuristics to find the best solution without looking back.
464
461
-[Dynamic Programming](book/content/part04/dynamic-programming.asc): a technique for speeding up recursive algorithms when there are many _overlapping subproblems_. It uses _memoization_ to avoid duplicating work.
465
-
-[Divide and Conquer](book/content/part04/divide-and-conquer.asc): _divide_ problems into smaller pieces, _conquer_ each subproblem and then _join_ the results.
466
-
-[Backtracking](book/content/part04/backtracking.asc): search _all (or some)_ possible paths. However, it stops and _go back_ as soon as notice the current solution is not working.
462
+
-[Divide and Conquer](book/content/part04/divide-and-conquer.asc): _divide_ problems into smaller pieces, _conquer_ each subproblem, and then _join_ the results.
463
+
-[Backtracking](book/content/part04/backtracking.asc): search _all (or some)_ possible paths. However, it stops, and _go back_ as soon as notice the current solution is not working.
467
464
-_Brute Force_: generate all possible solutions and tries all of them. (Use it as a last resort or as the starting point).
468
465
469
466
---
@@ -476,7 +473,7 @@ We are going to discuss the following techniques for solving algorithms problems
476
473
<details>
477
474
<summary>How would I apply these to my day-to-day work? <i>(Click to expand)</i></summary>
478
475
<p>
479
-
As a programmer, we have to solve problems every day. If you want to solve problems well, then it's good to know about a broad range of solutions. A lot of times, it's more efficient to learn existing resources than stumble upon the answer yourself. The more tools and practice you have, the better. This book helps you understand the tradeoffs among data structures and reason about algorithms performance.
476
+
As a programmer, we have to solve problems every day. If you want to solve problems well, it's good to know about a broad range of solutions. Often, it's more efficient to learn existing resources than stumble upon the answer yourself. The more tools and practice you have, the better. This book helps you understand the tradeoffs among data structures and reason about algorithms performance.
0 commit comments