geeksforgeeks.org-DSA Tutorial - Learn Data Structures and Algorithms
geeksforgeeks.org-DSA Tutorial - Learn Data Structures and Algorithms
DSA (Data Structuresand Algorithms) is the study of organizing data efficiently using data
structures like arrays, stacks, and trees, paired with step-by-step procedures (or
algorithms) to solve problems effectively. Data structures manage how data is stored and
accessed, while algorithms focus on processing this data.
Hoping you have learned a programming language of your choice, here comes the next
stage of the roadmap - Learn about Time and Space Complexities.
1. Logic Building
Once you have learned basics of a programming language, it is recommended that you
learn basic logic building
1/6
2. Learn about Complexities
3. Array
Array is a linear data structure where elements are allocated contiguous memory,
allowing for constant-time access.
4. Searching Algorithms
Searching algorithms are used to locate specific data within a large set of data. It helps
find a target value within the data. There are various types of searching algorithms, each
with its own approach and efficiency.
5. Sorting Algorithm
Sorting algorithms are used to arrange the elements of a list in a specific order, such
as numerical or alphabetical. It organizes the items in a systematic way, making it easier
to search for and access specific elements.
6. Hashing
Hashing is a technique that generates a fixed-size output (hash value) from an input of
variable size using mathematical formulas called hash functions. Hashing is commonly
used in data structures for efficient searching, insertion and deletion.
Hashing Guide
Quiz on Hashing
2/6
Two Pointer Technique
Quiz on Two Pointer Technique
In Window Sliding Technique, we use the result of previous subarray to quickly compute
the result of current.
In Prefix Sum Technique, we compute prefix sums of an array to quickly find results for a
subarray.
10. String
String is a sequence of characters, typically immutable and have limited set of elements
(lower case or all English alphabets).
Strings Guide
Quiz on Strings
11. Recursion
Recursion is a programming technique where a function calls itself within its own
definition. It is usually used to solve problems that can be broken down into smaller
instances of the same problem.
12. Matrix/Grid
Matrix is a two-dimensional array of elements, arranged in rows and columns. It is
represented as a rectangular grid, with each element at the intersection of a row and
column.
Matrix Guide
Quiz on Matrix/Grid.
3/6
Linked list is a linear data structure that stores data in nodes, which are connected by
pointers. Unlike arrays, nodes of linked lists are not stored in contiguous memory
locations and can only be accessed sequentially, starting from the head of list.
14. Stack
Stack is a linear data structure that follows the Last In, First Out (LIFO) principle. Stacks
play an important role in managing function calls, memory, and are widely used in
algorithms like stock span problem, next greater element and largest area in a histogram.
Stack Guide
Quiz on Stack
15. Queue
Queue is a linear data structure that follows the First In, First Out (FIFO) principle.
Queues play an important role in managing tasks or data in order, scheduling and
message handling systems.
16. Deque
A deque (double-ended queue) is a data structure that allows elements to be added or
removed from both ends efficiently.
17. Tree
Tree is a non-linear, hierarchical data structure consisting of nodes connected by
edges, with a top node called the root and nodes having child nodes. It is widely used in
file systems, databases, decision-making algorithms, etc.
18. Heap
Heap is a complete binary tree data structure that satisfies the heap property. Heaps
are usually used to implement priority queues, where the smallest or largest element is
always at the root of the tree.
19. Graph
Graph is a non-linear data structure consisting of a finite set of vertices(or nodes) and a
set of edges(or links)that connect a pair of nodes. Graphs are widely used to represent
relationships between entities.
4/6
Greedy Algorithm builds up the solution one piece at a time and chooses the next piece
which gives the most obvious and immediate benefit i.e., which is the most optimal
choice at that moment. So the problems where choosing locally optimal also leads to
the global solutions are best fit for Greedy.
Backtracking Algorithm : Follow Recursion with the option to revert and traces back if
the solution from current point is not feasible.
Divide and conquer: A strategy to solve problems by dividing them into smaller
subproblems, solving those subproblems, and combining the solutions to obtain the final
solution.
Geometric algorithms are a set of algorithms that solve problems related to shapes,
points, lines and polygons.
Randomized algorithms are algorithms that use randomness to solve problems. They
make use of random input to achieve their goals, often leading to simpler and more
efficient solutions. These algorithms may not product same result but are particularly
useful in situations when a probabilistic approach is acceptable.
Randomized Algorithms
5/6
6/6