Skip to content

santhosh28katakam/Strivers-DSA

 
 

Repository files navigation

Data Structures and Algorithms in Java

Welcome to the Data Structures and Algorithms in Java repository! This repository contains a collection of Java implementations for various data structures and algorithms commonly used in computer science and software development. Whether you are a beginner looking to learn the fundamentals of data structures and algorithms or an experienced developer seeking to refresh your knowledge, this repository is a valuable resource for you.

Table of Contents

Introduction

Data structures and algorithms are the building blocks of computer programs. They are essential tools for solving complex problems efficiently and are commonly tested in technical interviews. This repository aims to provide clear and concise Java implementations of various data structures and algorithms, along with explanations and examples, to help you understand and apply these concepts in your own projects.

Resources

LinkedList , Searching and Sorting : Kunal Kushwaha
Stacks & Queue : Pepcoding
Binary Tree & BST : Takeuforward
Recursion : Pepcoding
DP : Takeuforward
Graphs : Takeuforward
Heaps : Anuj Bhaiya
Greedy Algorithm : Check Video in DSA Resources Playlist (Link in Description)
Algorithms Questions : Techdose , Takeuforward , CodenCode , Fraz , Pepcoding

GUIDE

Striver

PRACTICE

LEETCODE
CODING NINJA

Data Structures

Arrays

Arrays are ordered collections of elements, and they are the simplest data structure. This section covers basic operations and common algorithms related to arrays.

Linked Lists

Linked lists are data structures made up of nodes, each containing a data element and a reference to the next node. Learn about singly linked lists, doubly linked lists, and circular linked lists.

Stacks

A stack is a linear data structure that follows the Last-In, First-Out (LIFO) principle. Discover how to implement and use stacks.

Queues

Queues are another linear data structure, but they follow the First-In, First-Out (FIFO) principle. Explore different types of queues and their applications.

Trees

Trees are hierarchical data structures with a root node and child nodes. Learn about binary trees, binary search trees, and other tree-based structures.

Graphs

Graphs are versatile data structures used to model relationships between entities. Explore different types of graphs and common graph algorithms.

Hash Tables

Hash tables are data structures that provide efficient data retrieval using key-value pairs. Understand how to implement and use hash tables.

Algorithms

Sorting

Sorting algorithms arrange elements in a specific order. Learn about popular sorting algorithms like Bubble Sort, Quick Sort, and Merge Sort.

Searching

Searching algorithms help locate specific elements within a data structure. Explore linear search, binary search, and more.

Graph Algorithms

Graph algorithms solve problems related to graphs, such as finding the shortest path or detecting cycles.

Dynamic Programming

Dynamic programming is a technique for solving complex problems by breaking them down into smaller subproblems. Discover dynamic programming algorithms and their applications.

Greedy Algorithms

Greedy algorithms make locally optimal choices at each step with the hope of finding a global optimum. Learn about the greedy algorithm paradigm and its applications.

Contributing

We welcome contributions from the community. If you have improvements to existing code, new data structure or algorithm implementations, or documentation enhancements, please feel free to submit a pull request. Be sure to follow our contribution guidelines for a smooth process.

License

This repository is licensed under the MIT License. You are free to use, modify, and distribute the code for both personal and commercial purposes. Please review the license file for more details.

Happy coding!

About

DSA IN JAVA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%