The purpose of this repository is to collect many algorithmic problems and provide implementations for them. Test cases are bundled in the source code, and they will be run when making a project build. The collection will be updated from time to time.
- Insertion sort with binary search
- Merge sort
- Heap sort
- Quick sort
- Tim sort with galloping
- Three-way string sort
- Knapsack with divide and conquer
- Quickselect (find kth smallest element)
- Zuma
- Greatest common divisor
- Longest common subsequence
- Decimal-binary numbers (from HackerRank)
- Maximal square (from LeetCode)
- Interleave string (from LeetCode)
- Dijkstra's algorithm
- Minimum spanning tree
- Bellman-Ford algorithm
- AVL tree
- Fibonacci heap
- LRU cache
- 2-3 tree
- Red-black tree
- Linear probing hash table
- AES-128 in ECB mode and associated attacks
- AES-128 in CBC mode and associated attacks
- AES-128 in CTR mode and fixed-nonce attack
- Various basic encryption schemes and attacks
- Other crypto related functions
- Lsof aggregator
- Host log reporter
- Data transfer encoder
- Stream scanner
- Prometheus aggregator
- Sorted sum (from HackerRank)
- Sub-array imbalance (from Amazon test)
- Permutation generator
- Sub-array sum equals k (from LeetCode)
- Partition equal subset sum (from LeetCode)
- Sudoku solver
- Clone or download this repository and change into the project's root directory (where
pom.xmlis located). - Run
./mvnw clean verifyto compile, test, and check format. - Run
./mvnw spotless:applyto format the code.