Skip to content

sudheerj/datastructures-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

305 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Data Structures and Algorithms

A comprehensive collection of data structures and algorithms implemented in multiple programming languages. This repository serves as a resource for learning and practicing fundamental computer science concepts.

Overview

This repository contains implementations of various data structures and algorithms, organized by category. Each implementation includes:

  • Source code
  • Interactive playground (where available)
  • Documentation explaining the concept, approach, and complexity

The implementations are primarily in JavaScript, with some examples in other languages like Java, TypeScript, and Go.

Data Structures

Stack

No. Name Source Live Documentation Level Pattern Hint
1 Stack using array Source JavaScript - Easy Using Array operations -
2 Stack using linkedlist Source JavaScript - Easy Using LinkedList operations -

Queue

No. Name Source Live Documentation Level Pattern Hint
1 Queue using array Source JavaScript Documentation Easy Using Array operations -
2 Queue using linkedlist Source JavaScript Documentation Easy Using LinkedList operations -

SinglyLinkedList

No. Name Source Live Documentation Level Pattern Hint
1 SinglyLinkedList implementation Source JavaScript Documentation Easy Linked List operations -

DoublyLinkedList

No. Name Source Live Documentation Level Pattern Hint
1 DoublyLinkedList implementation Source JavaScript Documentation Easy Linked List operations -

Tree

No. Name Source Live Documentation Level Pattern Hint
1 Binary Search Tree Source JavaScript Documentation Medium Tree operations -

Graphs

No. Name Source Live Documentation Level Pattern Hint
1 Unweighted undirected graph Source JavaScript Documentation Medium Graph operations -

HashTable

No. Name Source Live Documentation Level Pattern Hint
1 HashTable Source JavaScript - Medium Hash operations -

Algorithms

Array

No. Name Source Live Documentation Level Pattern Hint
1 Contains duplicates Source Playground Documentation Easy Set/Object Verify duplicate using set or map/dict/object
2 Two sum2- Input array sorted Source Playground Documentation Medium Two pointers -
3 3 sum Source Playground Documentation Medium Two pointers -
4 Product of array except self Source Playground Documentation Medium Prefix and postfix pattern -
5 Max sum subarray Source Playground Documentation Medium Kadane's algorithm -
6 Minimum size subarray sum Source Playground Documentation Medium Sliding window -
7 Sort Colors Source Playground Documentation Medium Two pointers -
8 Maximum product subarray Source Playground Documentation Medium Kadane's algorithm -
9 Find minimum in rotated sorted array Source Playground Documentation Medium Binary search technique -
10 Maximum Circular subarray Source Playground Documentation Medium Kadane's algorithm -
11 Rotate array Source Playground Documentation Medium Two pointers -
12 Search in rotated sorted array Source Playground Documentation Medium Binary search -
13 Container with most water Source Playground Documentation Medium Two pointers Calculate max area and move shorter pointer inward
14 First missing positive number Source JavaScript Documentation Hard In-place hashing -
15 Best time to buy stock and sell stock Source JavaScript Documentation Easy Greedy algorithm Look for minprice at each position
16 Two missing numbers Source JavaScript Documentation Medium Sum and average calculations -
17 Pascal's Triangle Source JavaScript Documentation Easy Array traversal and sequential sum -
18 Remove Element Source JavaScript Documentation Easy Array traversal -
19 Can place flowers Source JavaScript Documentation Easy Array traversal and comparison -
20 Majority Element Source JavaScript Documentation Easy Boyer Moore Voting algorithm -
21 Pivot Index Source JavaScript Documentation Easy Array traversal -
22 Range Sum queries Source JavaScript Documentation Easy Array traversal -
23 Disappeared numbers Source JavaScript Documentation Easy Array traversal -
24 Identical pairs Source JavaScript Documentation Easy Array traversal & map -
25 Destination City Source JavaScript Documentation Easy Array traversal & set -
26 Set mismatch Source JavaScript Documentation Easy Array traversal & marking numbers -
27 Intersection of arrays Source JavaScript Documentation Easy Set and array traversal -
29 Special array Source JavaScript Documentation Easy Frequency counter and array traversal -
30 Max length between equal chars Source JavaScript Documentation Easy Array traversal -
31 Third largest element Source JavaScript Documentation Easy Array traversal -
32 Odd occurrences Source JavaScript Documentation Easy XOR operation -
33 Max counters Source JavaScript Documentation Medium Lazy update strategy -
34 Tape equilibrium Source JavaScript Documentation Easy Prefix sum -
35 Perm check Source JavaScript Documentation Easy Set operations -
36 Equi leader Source JavaScript Documentation Medium Boyer-Moore algorithm -
37 Count triangles Source JavaScript Documentation Medium Two pointers -
38 Min abs sum of two Source JavaScript Documentation Medium Two pointers -
39 Abs distinct Source JavaScript Documentation Easy Two pointers -
40 Count distinct slices Source JavaScript Documentation Medium Sliding window -

String

No. Name Source Live Documentation Level Pattern Hint
1 Longest substring without repeating characters Source JavaScript Documentation Medium Sliding Window set to remove duplicates or map/dict with (char,index) key-value pairs to jump position
2 Longest repeating character replacement Source JavaScript Documentation Medium Sliding Window char frequency dict/map with windowLength-maxFrequency > k check
3 Minimum window substring Source JavaScript Documentation Hard Sliding Window Two char frequecies map/dict for finding minimum length based on having == required
4 Valid anagram Source JavaScript Documentation Easy Frequency counting Balancing char frequency map/dict
5 Group anagrams Source JavaScript Documentation Medium Frequency counting Group anagrams based on unique key(counter or sorted)
6 Valid palindrome Source JavaScript Documentation Easy Two pointer Compare two strings using two pointers
7 Longest palindromic substring Source JavaScript Documentation Medium Expanding around center -
8 Palindromic substrings Source JavaScript Documentation Medium Expanding around center -
9 Encode and decode strings Source JavaScript Documentation Medium Basic string and array operations -
10 Greatest common devisor of strings Source JavaScript Documentation Easy Euclidean and String operations -
11 Reverse words in string Source JavaScript Documentation Medium Basic string and array operations -
12 Length of last word Source JavaScript Documentation Easy String traversal -

Dynamic programming

No. Name Source Live Documentation Level Pattern Hint
1 Climbing stairs Source JavaScript Documentation Medium Dynamic programming -
2 Coin change Source JavaScript Documentation Medium Dynamic programming -
3 Longest increasing subsequence Source JavaScript Documentation Medium Dynamic programming(Bottom up) -
4 Longest common subsequence Source JavaScript Documentation Medium Two-dimentional bottom up Dynamic programming -
5 Word break Source JavaScript Source Medium Bottom up dynamic programming -
6 Combination Sum 4 Source JavaScript Documentation Medium Bottom up Dynamic programming -
7 House robber Source JavaScript Documentation Medium Fibonacci pattern bottom-up dynamic programming -
8 House robber 2 Source JavaScript Documentation Medium Bottom-up dynamic programming -
9 Decode ways Source JavaScript Documentation Medium Dynamic programming -
10 Unique paths Source JavaScript Documentation Medium Dynamic programming -
11 Jump game Source JavaScript Documentation Medium Dynamic programming or Greedy -
12 Min abs sum Source JavaScript Documentation Medium Dynamic programming -
13 Number solitaire Source JavaScript Documentation Medium Dynamic programming -

Binary

No. Name Source Playground Documentation Level Pattern Hint
1 Sum of two integers Source JavaScript Documentation Medium Bitwise operations -
2 Number of 1 Bits Source JavaScript Documentation Easy Brian Kernighans -
3 Counting Bits Source JavaScript Documentation Easy Dynamic programming -
4 Missing number Source JavaScript Documentation Easy Bitwise XOR -
5 Reverse Bits Source JavaScript Documentation Easy Bitwise operations -

Stack

No. Name Source Live Documentation Level Pattern Hint
1 Sort Stack Source JavaScript Documentation Easy Stack push & pop -
2 Balanced Brackets Source JavaScript Documentation Medium Stack push and pop -
3 Reverse Polish Notation Source JavaScript Documentation Medium Stack push & pop -
4 Daily Temperatures Source JavaScript Documentation Medium Monotonic decreasing stack -
5 Number of People See In Queue Source JavaScript Documentation Medium Monotonic decreasing stack -

LinkedList

No. Name Source Live Documentation Level Pattern Hint
1 Reverse sublist Source JavaScript Documentation Easy List traversal -
2 Detect cycle in a linkedlist Source JavaScript Documentation Easy Floyd's cycle-finding algorithm -
3 Merge two sorted lists Source JavaScript Documentation Easy Arithmetic comparison -
4 Merge K sorted lists Source JavaScript Documentation Hard Divide and conquer -
5 Remove Kth node from end of list Source JavaScript Documentation Medium Two pointers -
6 Reorder list Source JavaScript Documentation Medium Two pointers -
7 Find middle node Source JavaScript Documentation Easy Two pointers -
8 Find Kth node from end of list Source JavaScript Documentation Easy Two pointers -
9 Partition list Source JavaScript Documentation Medium Two pointers -
10 Remove duplicates Source JavaScript Documentation Easy Two pointers -
11 Binary to decimal Source JavaScript Documentation Easy List traversal and math operations -

DoublyLinkedList

No. Name Source Live Documentation Level Pattern Hint
1 Swap first and last Source JavaScript Documentation Easy Swap nodes -
2 Palindrome check Source JavaScript Documentation Easy Two pointers -
3 Swap node pairs Source JavaScript Documentation Medium List traversal and pointer updates -

Tree

No. Name Source Live Documentation Level Pattern Hint
1 Maximum depth of binary tree Source JavaScript Documentation Easy DFS with recursion -
2 Same tree Source JavaScript Documentation Easy DFS with recursion -
3 Invert or Flip binary tree Source JavaScript Documentation Easy DFS with recursion -
4 Binary tree maximum path sum Source JavaScript Documentation Hard DFS using recursion -
5 Binary tree level order traversal Source JavaScript Documentation Easy BFS traversal -
6 Serialize and deserialize binary tree Source JavaScript Documentation Hard DFS preorder traversal -
7 Subtree of another tree Source JavaScript Documentation Easy DFS with recursion -
8 Construct binary tree from traversals Source JavaScript Documentation Medium DFS with recursion -
9 Validate BST Source JavaScript Documentation Medium DFS using recursion -
10 Kth smallest element in BST Source JavaScript Documentation Medium Inorder traversal -
11 Lowest Common Ancestor of BST Source JavaScript Documentation Medium Tree traversal -
12 Trie Source JavaScript Documentation Medium String character iteration -
13 Design and Search words Datastructure Source JavaScript Documentation Medium Trie and DFS recursion -
14 Word search 2 Source JavaScript Documentation Hard Backtracking with Trie -

Graph

No. Name Source Live Documentation Level Pattern Hint
1 Clone graph Source JavaScript Documentation Medium DFS using recursion -
2 Course schedule Source JavaScript Documentation Medium DFS using recursion -
3 Pacific Atlantic waterflow Source JavaScript Documentation Medium DFS using recursion -
4 Number of Islands Source JavaScript Documentation Medium DFS using recursion -
5 Alien dictionary Source JavaScript Documentation Hard Topological sorting -
6 Graph valid tree Source JavaScript Documentation Medium Union Find algorithm -
7 Number of connected components Source JavaScript Documentation Medium Union Find algorithm -
8 Walls and gates Source JavaScript Documentation Medium BFS traversal -
9 Fib frog Source JavaScript Documentation Medium Dynamic programming -

Matrix

No. Name Source Live Documentation Level Pattern Hint
1 Set matrix zeros Source JavaScript Documentation Medium In-place updates -
2 Spiral matrix Source JavaScript Documentation Medium Boundary traversal -
3 Rotate image Source JavaScript Documentation Medium In-place rotation -
4 Word search Source JavaScript Documentation Medium DFS using recursion -

Interval

No. Name Source Live Documentation Level Pattern Hint
1 Insert interval Source JavaScript Documentation Medium Math operations -
2 Merge interval Source JavaScript Documentation Medium Sorting and math operations -
3 Non-overlapping intervals Source JavaScript Documentation Medium Greedy algorithm -
4 Meeting rooms Source JavaScript Documentation Medium Greedy algorithm -
5 Meeting rooms 2 Source JavaScript Documentation Medium Two pointers -
6 Meeting rooms 3 Source JavaScript Documentation Medium Greedy algorithm Two minheaps + greedy scheduling + simulation
7 Max non-overlapping segments Source JavaScript Documentation Medium Greedy algorithm -

HashTable

No. Name Source Live Documentation Level Pattern Hint
1 Duplicates Source JavaScript Documentation Easy Using Map -
2 Two sum Source JavaScript Documentation Easy Using Map -
3 First non repeating character Source JavaScript Documentation Easy Using Map -
4 Group anagrams Source JavaScript Documentation Medium Map methods -
5 Verify Common Elements Source JavaScript Documentation Easy Map methods -
6 Longest consecutive sequence Source JavaScript Documentation Medium Set operations -
7 Valid Sudoku Source JavaScript Documentation Medium Map and Set methods -
8 Letter combinations Source JavaScript Documentation Medium Backtracking with hash mapping -
9 LRU Cache Source JavaScript Documentation Medium Hash Table with linked list -
10 Maximum number of balloons Source JavaScript Documentation Easy Character frequency map -
11 Isomorphic Strings Source JavaScript Documentation Easy Character mapping -
14 First unique character Source JavaScript Documentation Easy Character frequency count -

Sorting

No. Name Source Live Documentation Level Complexity Hint
1 Bubble sort Source JavaScript Documentation Easy TC: O(n²), SC: O(1) -
2 Selection sort Source JavaScript Documentation Easy TC: O(n²), SC: O(1) -
3 Insertion sort Source JavaScript Documentation Easy TC: O(n²), SC: O(1) -
4 Merge sort Source JavaScript Documentation Medium TC: O(n log n), SC: O(n) -
5 Quick sort Source JavaScript Documentation Medium TC: O(n²), SC: O(log n) -
6 Heap sort Source JavaScript Documentation Hard TC: O(n log n), SC: O(1) -
7 Radix sort Source JavaScript Documentation Medium TC: O(d(n+k)), SC: O(n+k) -
8 Max product of three Source JavaScript Documentation Easy Array sorting -

Misc

No. Name Source Live Documentation Level Pattern Hint
1 Frog jump Source JavaScript Documentation Easy Mathematical calculation -
2 Missing element Source JavaScript Documentation Easy Mathematical calculation -
3 Frog river one Source JavaScript Documentation Easy Set operations -
4 Count divisible Source JavaScript Documentation Easy Mathematical calculation -

Releases

No releases published

Sponsor this project

  •  

Packages

 
 
 

Contributors