This repository contains Scala based examples of many popular algorithms and data structures.
☝ Note that this project is meant to be used for learning and researching purposes only and it is not meant to be used for production.
A design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
B - Beginner, A - Advanced
A data structure is a particular way of organizing and storing data in a computer so that it can be accessed and modified efficiently. More precisely, a data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.
B - Beginner, A - Advanced
An algorithm is an unambiguous specification of how to solve a class of problems. It is a set of rules that precisely define a sequence of operations.
E - Easy, M - Medium, H - Hard
-
Sorting
- E [Bubble Sort](Bubble Sort)
-
Array
-
Backtracking
-
Graph
-
Bit
-
- Word Break
- Palindromic Substrings
- Nth Ugly Number
- H Longest Valid Parentheses
- M Decode Ways
- E Nth Fibonacci Number
- M Counting Bits
- M Unique Paths
- M Unique Paths II
- E House Robber
- E House Robber II
- E Maximum Subarray
- M Longest Palindromic Substring
- E Climbing Stairs
- E Best Time to Buy and Sell Stock
- M Coin Change II
- M Coin Change
- M Min Cost Climbing Stairs
- M Longest Increasing Subsequence
- M Maximum Product Subarray
-
Hashtable
-
Heap
-
List
-
Math
-
Stack
-
String
-
- E Subtree of Another Tree
- E Path Sum
- E Symmetric Tree
- E Same Tree
- E Minimum Depth of Binary Tree
- E Maximum Depth of Binary Tree
- E Binary Tree Level Order Traversal II
- E Invert Binary Tree
- E Search in a Binary Search Tree
- E Build Binary Search Tree
- M Path Sum II
- M Binary Tree Level Order Traversal
- M Pre Order