Skip to content

Grekou/java-algorithms

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 πŸ“š ⏱ Java Data Structures and Algorithms

  • Implementation of Data Structures and Algorithms.
  • Solved Solutions from leetcode ant etc.

Helping welcome! Thanks!

πŸ“Œ notation keys::

  • 🍏 - easy;
  • 🍊 - medium;
  • 🍎 - hard;
  • ⭕️(1), ⭕️log(N), ⭕️(N^2)... - Big O notations;
  • [✍🏻] - in progress;
  • [πŸ™‡πŸ»β€β™‚οΈ] - hard to solve;
  • [❓] - the solution is not optimal;
  • [βœ”οΈ] - done;
  • [πŸ†—] - Test passed Ok;

Data Structure: Arrays

Algorithm (operation) Level Done Big ⭕️ Notation Tests passed:
findMin 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
merge 🍏 [✍🏻]
pop 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
push 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
remove(position) 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
reverse 🍊 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
reverse(start, end) 🍊 [βœ”οΈ] ⭕️(N)
size 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
sort 🍊 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open
GenericArray <T> 🍊

Data Structure: Matrix

Algorithm (operation) Level Done Big ⭕️ Notation Tests passed
rotate 🍊 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open
transpose 🍊 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open
reflect 🍊 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open

Data Structure: Singly Linked List

Algorithm (operation) Level Done Big ⭕️ Notation Tests passed
append(data) 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open
preppend(data) 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
find(data) 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
deleteFirst() 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
deleteLast() 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open
deletePos(position) 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
length() 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
reverse() 🍏 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open
getMid(LinkedList) 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
merge(LinkedList, LinkedList) 🍊 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
sort() 🍊 [βœ”οΈ] ⭕️(N Log(N)) [πŸ†—] Open

Data Structure: Doubly Linked List

Algorithm (operation) Level Done Big ⭕️ Notation Tests passed
append(data) 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open
preppend(data) 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open
deleteFirst() 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open
deleteLast() 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open

Data Structure: Stack<Listnode>

Algorithm (operation) Level Done Big ⭕️ Notation Tests passed
getMin() 🍏 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
peak() 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open
pop() 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open
push(data) 🍏 [βœ”οΈ] ⭕️(1) [πŸ†—] Open

Data Structure: Queue

Algorithm (operation) Level Done Big ⭕️ Notation
isEmpty 🍏 [✍🏻]
peak 🍏 [✍🏻]
enqueue 🍏 [✍🏻]
dequeue 🍏 [✍🏻]

Data Structure: Hash Table<Listnode>

Algorithm (operation) Level Done Big ⭕️ Notation
hash(key) 🍏 [✍🏻]
set(key, value) 🍏 [✍🏻]
delete(key) 🍏 [✍🏻]
get(key) 🍏 [✍🏻]
has(key) 🍏 [✍🏻]
getKeys() 🍏 [✍🏻]
getValues() 🍏 [✍🏻]

Data Structure: Heap

Algorithm (operation) Level Done Big ⭕️ Notation
add 🍎 [✍🏻]
remove 🍎 [✍🏻]

Data Structure: Trie

Algorithm (operation) Level Done Big ⭕️ Notation
addWord 🍎 [✍🏻]
deleteWord 🍎 [✍🏻]

Data Structure: Tree

Algorithm (operation) Level Done Big ⭕️ Notation Tests passed
Binary Tree 🍎 [✍🏻]
Binary Tree Recursive: insert(data) 🍎 [βœ”οΈ] ⭕️log(N) [πŸ†—] Open
Binary Tree Recursive: preOrderPrint() 🍎 [βœ”οΈ] ⭕️log(N) [πŸ†—] Open
Binary Tree Recursive: inOrderPrint() 🍎 [βœ”οΈ] ⭕️log(N) [πŸ†—] Open
Binary Tree Recursive: postOrderPrint() 🍎 [βœ”οΈ] ⭕️log(N) [πŸ†—] Open
Binary Tree Recursive: find(data) 🍎 [βœ”οΈ] ⭕️log(N) [πŸ†—] Open
Binary Tree Recursive: delete() 🍎 [βœ”οΈ] ⭕️log(N) [πŸ†—] Open
Binary Tree Iterative: insert(data) 🍎 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
Binary Tree Iterative: preOrderPrint() 🍎 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
Binary Tree Iterative: inOrderPrint() 🍎 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
Binary Tree Iterative: postOrderPrint() 🍎 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
AVL Tree 🍎 [✍🏻]
Fenwick Tree 🍎 [✍🏻]
Red-Black Tree 🍎 [✍🏻]
Segment Tree 🍎 [✍🏻]
Algorithm (operation) Level Done Big ⭕️ Notation
directed 🍎 [✍🏻]
undirected 🍎 [✍🏻]
Algorithm (operation) Level Done Big ⭕️ Notation Tests passed
Binary Search Iterative 🍊 [βœ”οΈ] ⭕️(N) [πŸ†—] Open
Binary Search Recursive 🍊 [βœ”οΈ] ⭕️(log N) [πŸ†—] Open
Algorithm (operation) Level Done Big ⭕️ Notation Tests passed
Buble Sort <T> 🍏 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open
Quick Sort 🍊 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open
MergeSort 🍏 [βœ”οΈ] ⭕️(N log(N)) [πŸ†—] Open
Insertion Sort 🍏 [βœ”οΈ] ⭕️(N^2) [πŸ†—] Open

Leetcode's Problems by Skills:


Arrays

Arrays SubSkills Lvl Complexity: Time , Space Solved Problems
Elements Sum 🍏 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(N) 1. Two Sum
Duplicates Remove 🍏 ⏱ ⭕️(N), πŸ’Ύ ⭕️(1) 26. Remove Duplicates from Sorted Array
Element Search 🍏 ⏱ ⭕️(N), πŸ’Ύ ⭕️(1) 35. Search Insert Position
Elements Sort 🍏 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(1) 88. Merge Sorted Array
Elements Memoization 🍏 ⏱ ⭕️(N), πŸ’Ύ ⭕️(1) 121. Best Time to Buy and Sell Stock
Elements Move 🍏 ⏱ ⭕️(N), πŸ’Ύ ⭕️(1) 283. Move Zeroes
Elements Sort , Math 🍏 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(1) 977. Squares of a sorted Array
Element Two Pointers 🍊 ⏱ ⭕️(N), πŸ’Ύ ⭕️(1) 11. Container with Most Water
Permutations 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(1) 31. Next Permutation
Backtracking 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(N) 46. Permutations
Matrix Operations 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(1) 48. Rotate Image
Elements Math 🍊 ⏱ ⭕️(N), πŸ’Ύ ⭕️(1) 53. Maximum Subarray
Elements Sort 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(N^2) 56. Merge Intervals
Two Pointers 🍊 ⏱ ⭕️(N), πŸ’Ύ ⭕️(N) 167. Two Sum II
Two Pointers 🍊 ⏱ ⭕️(N), πŸ’Ύ ⭕️(N) 189. Rotate Array
DP 🍊 ⏱ ⭕️(N), πŸ’Ύ ⭕️(1) 198. House Robber
Elements Sort 🍎 ⏱ ⭕️(log(N)), πŸ’Ύ ⭕️(1) 4. Median of Two Sorted Arrays

Backtracking

Backtracking SubSkills Lvl Complexity: Time , Space Solved Problems
Hash Table 🍊 ⏱ ⭕️(N), πŸ’Ύ ⭕️(N) 17. Letter Combinations of a Phone Number
Recursion 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(N) 22. Generate Parentheses
String, Recursion 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(N) 39. Combination Sum
Recursion 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(2N) 77. Combinations
Matrix, Recursion 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(N^2) 79. Word Search
String, Recursion 🍊 ⏱ ⭕️(N^2), πŸ’Ύ ⭕️(N) 784. Letter Case Permutation

Binary Search

Skills by abc Diff Language Solved Problems
Binary Search 🍏 easy Java 367. Valid Perfect Square
Binary Search 🍊 medium Java 33. Search In Rotated Sorted Array
Binary Search 🍊 medium Java 34. Find First and Last Position of Element in Sorted Array
Binary Search 🍊 medium Java 153. Find Minimum in Rotated Sorted Array
Binary Search 🍊 medium Java 167. Two Sum II
Binary Search 🍎 hard Java 4. Median of Two Sorted Arrays
➿ ➿ ➿ ➿
Binary Tree 🍏 easy Java 94. Binary Tree Inorder Traversal
Binary Tree 🍏 easy Java 100. Same Tree
Binary Tree 🍏 easy Java 101. Symmetric Tree
Binary Tree 🍏 easy Java 104. Maximum Depth of Binary Tree
Binary Tree 🍏 easy Java 108. Convert Sorted Array To Binary Search Tree
Binary Tree 🍏 easy Java 145. Binary Tree Postorder Traversal
Binary Tree 🍏 easy Java 226. Invert Binary Tree
Binary Tree 🍏 easy Java 543. Diameter of Binary Tree
Binary Tree 🍏 easy Java 617. Merge Two Binary Trees
Binary Tree 🍊 medium Java 98. Validate Binary Search Tree
Binary Tree 🍊 medium Java 102. Binary Tree Level Order Traversal
Binary Tree 🍊 medium Java 105. Construct Binary Tree from Preorder and Inorder Traversal
Binary Tree 🍊 medium Java 114. Flatten Binary Tree to Linked List
Binary Tree 🍊 medium Java 116. Populating Next Right Pointers in Each Node
Binary Tree 🍊 medium Java 199. Binary Tree Right Side View
Binary Tree 🍊 medium Java 669. Trim a Binary Search Tree
➿ ➿ ➿ ➿
Bit Manipulation 🍏 easy Java 67. Add Binary
Bit Manipulation 🍏 easy Java 136. Single Number
Bit Manipulation 🍏 easy Java 191. Number of 1 Bits
Bit Manipulation 🍏 easy Java 338. Counting Bits
➿ ➿ ➿ ➿
Breadth-First Search 🍊 medium Java 116. Populating Next Right Pointers in Each Node
Breadth-First Search 🍊 medium Java 994. Rotting Oranges
➿ ➿ ➿ ➿
Design 🍏 easy Java 155. Min Stack
➿ ➿ ➿ ➿
Depth-First Search 🍏 easy Java 733. Flood Fill
Depth-First Search 🍊 medium Java 98. Validate Binary Search Tree
Depth-First Search 🍊 medium Java 695. Max Area of Islands
➿ ➿ ➿ ➿
Divide and Conquer 🍏 easy Java 190. Reverse Bits
Divide and Conquer 🍎 hard Java 4. Median of Two Sorted Arrays
➿ ➿ ➿ ➿
Dynamic Programming 🍏 easy Java 70. Climbing Stairs
Dynamic Programming 🍏 easy Java 118. Pascal's Triangle
Dynamic Programming 🍏 easy Java 119. Pascal's Triangle II
Dynamic Programming 🍏 easy Java 121. Best Time to Buy and Sell Stock
Dynamic Programming 🍏 easy Java 509. Fibonacci Number
Dynamic Programming 🍊 medium Java 5. Longest Palindromic Substring
Dynamic Programming 🍊 medium Java 53. Maximum Subarray
Dynamic Programming 🍊 medium Java 62. Unique Paths
Dynamic Programming 🍊 medium Java 63. Unique Paths II
Dynamic Programming 🍊 medium Java 97. Interleaving String
Dynamic Programming 🍊 medium Java 198. House Robber
Dynamic Programming 🍊 medium Java 322. Coin Change
Dynamic Programming 🍊 medium Java 542. 01 Matrix
➿ ➿ ➿ ➿
Hash Table 🍏 easy Java 1. Two Sum
Hash Table 🍏 easy Java 13. Roman to Integer
Hash Table 🍏 easy Java 202. Happy Number
Hash Table 🍏 easy Java 217. Contains Duplicate
Hash Table 🍏 easy Java 448. Find All Numbers Disappeared in an Array
Hash Table 🍏 easy Java 929. Unique Email Addresses
Hash Table 🍊 medium Java 3. Longest Substring Without Repeating Characters
Hash Table 🍊 medium Java 49. Group Anagram
Hash Table 🍊 medium Java 128. Longest Consecutive Sequence
➿ ➿ ➿ ➿
Linked List 🍏 easy Java 21. Merge Two Sorted Lists
Linked List 🍏 easy Java 160. Intersection of Two Linked Lists
Linked List 🍏 easy Java 203. Remove Linked List Elements
Linked List 🍏 easy Java 206. Reverse Linked List
Linked List 🍏 easy Java 234. Palindrome Linked List
Linked List 🍏 easy Java 876. Middle of the Linked List
Linked List 🍊 medium Java 2. Add Two Numbers
Linked List 🍊 medium Java 19. Remove Nth Node From End of List
Linked List 🍊 medium Java 116. Populating Next Right Pointers in Each Node
Linked List 🍊 medium Java 148. Sort List
Linked List 🍎 hard Java 23. Merge k Sorted Lists
➿ ➿ ➿ ➿
Math 🍏 easy Java 7. Reverse Integer
Math 🍏 easy Java 9. Palindrome Number
Math 🍏 easy Java 231. Power of Two
Math 🍏 easy Java 258. Add Digits
Math 🍊 medium Java 2. Add Two Numbers
➿ ➿ ➿ ➿
Matrix 🍏 easy Java 733. Flood Fill
Matrix 🍊 medium Java 48. Rotate Image
Matrix 🍊 medium Java 695. Max Area of Islands
➿ ➿ ➿ ➿
Memoization 🍏 easy Java 509. Fibonacci Number
➿ ➿ ➿ ➿
Merge Sort 🍊 medium Java 148. Sort List
Merge Sort 🍎 hard Java Merge k Sorted Lists
➿ ➿ ➿ ➿
Number Theory 🍊 medium Java 204. Count Primes
➿ ➿ ➿ ➿
Recursion 🍏 easy Java 21. Merge Two Sorted Lists
Recursion 🍏 easy Java 191. Number of 1 Bits
Recursion 🍏 easy Java 206. Reverse Linked List
Recursion 🍏 easy Java 234. Palindrome Linked List
Recursion 🍏 easy Java 231. Power of Two
Recursion 🍏 easy Java 509. Fibonacci Number
Recursion 🍊 medium Java 2. Add Two Numbers
➿ ➿ ➿ ➿
Sliding Window 🍏 easy Java 643. Maximum Average Subarray I
Sliding Window 🍊 medium Java 3. Longest Substring Without Repeating Characters
Sliding Window 🍊 medium Java 438. Find All Anagrams in a String
Sliding Window 🍊 medium Java 567. Permutation in String
➿ ➿ ➿ ➿
Stack 🍏 easy Java 20. Valid Parentheses
Stack 🍏 easy Java 155. Min Stack
Stack 🍊 medium Java 394. Decode String
Stack 🍊 medium Java 1003. Check If Word Is Valid After Substitutions
➿ ➿ ➿ ➿
Sorting 🍏 easy Java 88. Merge Sorted Array
Sorting 🍏 easy Java 977. Squares of a sorted Array
Sorting 🍊 medium Java 56. Merge Intervals
➿ ➿ ➿ ➿
String 🍏 easy Java 14. Longest Common Prefix
String 🍏 easy Java 242. Valid Anagram
String 🍏 easy Java 344. Reverse String
String 🍏 easy Java 387. First Unique Character in a String
String 🍏 easy Java 551. Student Attendance Record I
String 🍏 easy Java 557. Reverse Words in a String III
String 🍏 easy Java 771. Jewels and Stones
String 🍊 medium Java 3. Longest Substring Without Repeating Characters
String 🍊 medium Java 5. Longest Palindromic Substring
String 🍊 medium Java 567. Permutation in String
String 🍊 medium Java 784. Letter Case Permutation
➿ ➿ ➿ ➿
Tree 🍏 easy Java [ 617. Merge Two Binary Trees
Tree 🍊 medium Java 116. Populating Next Right Pointers in Each Node
Tree 🍊 medium Java 687. Longest Unvalued Path
➿ ➿ ➿ ➿
Two Pointers 🍏 easy Java 125. Valide Palindrome
Two Pointers 🍏 easy Java 202. Happy Number
Two Pointers 🍏 easy Java 283. Move Zeroes
Two Pointers 🍏 easy Java 344. Reverse String
Two Pointers 🍏 easy Java 392. Is Subsequence
Two Pointers 🍏 easy Java 557. Reverse Words in a String III
Two Pointers 🍊 medium Java 11. Container with Most Water
Two Pointers 🍊 medium Java 19. Remove Nth Node From End of List
Two Pointers 🍊 medium Java 167. Two Sum II
Two Pointers 🍊 medium Java 189. Rotate Array
Two Pointers 🍊 medium Java 567. Permutation in String
➿ ➿ ➿ ➿
Union Find 🍊 medium Java 200. Number of Islands

need think

HackerRank

CodeWars

πŸ›  Use Unit Tests:

  • run all tests
mvn clean test
  • and result in the terminal:
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running dataStructures.tree.binarySearchTreeRecursive.BinarySearchTreeRecursiveTest
Test - Binary Search Tree Recursive : insert(data) - passed ok
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec
Running dataStructures.tree.binarySearchTreeIterative.BinarySearchTreeIterativeTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running dataStructures.doublyLinkedList.DoublyLinkedListTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running dataStructures.arrays.ArraysTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running dataStructures.arrays.BinarySearchArrayTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running dataStructures.singlyLinkedList.SinglyLinkedListTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running dataStructures.stack.StackTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running dataStructures.matrix.MatrixTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running sorting.InsertionSortTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running sorting.QuickSortTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running sorting.BubleSortTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running sorting.MergeSortTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec

Results :

Tests run: 46, Failures: 0, Errors: 0, Skipped: 0

About

Data Structures and Algorithms, Java realization, Solved problems, Everyday Tasks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 96.6%
  • Batchfile 2.2%
  • JavaScript 1.2%