{"id":18390661,"url":"https://github.com/naren-jha/algorithms","last_synced_at":"2026-02-23T12:03:37.879Z","repository":{"id":169489373,"uuid":"226419692","full_name":"naren-jha/Algorithms","owner":"naren-jha","description":"Implementation of most common data structures and algorithms","archived":false,"fork":false,"pushed_at":"2024-09-29T18:08:11.000Z","size":1318,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-29T23:13:23.045Z","etag":null,"topics":["algorithm","data-structures","dynamic-programming","graph-theory"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/naren-jha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-06T22:11:24.000Z","updated_at":"2024-09-29T18:08:15.000Z","dependencies_parsed_at":"2024-11-06T02:00:10.449Z","dependency_job_id":null,"html_url":"https://github.com/naren-jha/Algorithms","commit_stats":null,"previous_names":["naren-jha/algorithms"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/naren-jha/Algorithms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naren-jha%2FAlgorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naren-jha%2FAlgorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naren-jha%2FAlgorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naren-jha%2FAlgorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naren-jha","download_url":"https://codeload.github.com/naren-jha/Algorithms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naren-jha%2FAlgorithms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29742167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","data-structures","dynamic-programming","graph-theory"],"created_at":"2024-11-06T01:48:45.992Z","updated_at":"2026-02-23T12:03:37.839Z","avatar_url":"https://github.com/naren-jha.png","language":"Java","readme":"# [:books:](https://drive.google.com/drive/folders/0B1EMPyM0E8hzR093NjEyYm8zdjA?usp=sharing)Data Structures and Algorithms\nImplementation of most common data structures and algorithms in Java.\n\n## Data Structures\n* [:blue_book:](https://drive.google.com/file/d/1sa70Y2C6XUWq9g77dQtWuLKSr7ZirnCV/view?usp=sharing) [Linked Lists](https://github.com/njha-collab/Algorithms/blob/master/src/basic/ll/)\n  - [Singly Linked Lists](https://github.com/njha-collab/Algorithms/tree/master/src/basic/ll/singly)\n  - [Doubly Linked Lists](https://github.com/njha-collab/Algorithms/blob/master/src/basic/ll/doubly)\n* [:blue_book:](https://drive.google.com/file/d/18R7ab5qwcv9LBBVXZJfOCOz6_xPSsQtf/view?usp=sharing) [Stack](https://github.com/njha-collab/Algorithms/blob/master/src/basic/stack/)\n  - [Using Array](https://github.com/njha-collab/Algorithms/blob/master/src/basic/stack/usingarray/StackTest.java)\n  - [Using Linked List](https://github.com/njha-collab/Algorithms/blob/master/src/basic/stack/using_linkedlist/StackTest.java)\n  - [Using Queue](https://github.com/njha-collab/Algorithms/tree/master/src/basic/queue/problems)\n* [:blue_book:](https://drive.google.com/file/d/1CFI6GsKqkH_mb32Tc6d3hpLQo3yS0MyQ/view?usp=sharing) [Queue](https://github.com/njha-collab/Algorithms/tree/master/src/basic/queue/)\n  - [Using Array](https://github.com/njha-collab/Algorithms/blob/master/src/basic/queue/usingarray/QueueTest.java)\n  - [Using Linked List](https://github.com/njha-collab/Algorithms/blob/master/src/basic/queue/using_linkedlist/QueueTest.java)\n  - [Using Stack](https://github.com/njha-collab/Algorithms/tree/master/src/basic/queue/problems)\n* [:blue_book:](https://drive.google.com/file/d/1CFI6GsKqkH_mb32Tc6d3hpLQo3yS0MyQ/view?usp=sharing) [Deque](https://github.com/njha-collab/Algorithms/blob/master/src/basic/queue/)\n  - [Using Array](https://github.com/njha-collab/Algorithms/blob/master/src/basic/queue/usingarray/DequeTest.java)\n  - [Using Linked List](https://github.com/njha-collab/Algorithms/blob/master/src/basic/queue/using_linkedlist/DequeTest.java)\n* [:blue_book:](https://drive.google.com/file/d/1E2o4U1md4EK9O9Klv3BsP5bfyXYUS-2h/view?usp=sharing) [Binary Search Tree](https://github.com/njha-collab/Algorithms/blob/master/src/tree/bst/BstTest.java)\n* [:blue_book:](https://drive.google.com/file/d/1XQdrirRTAh_3FGP-bjyYGkY7zjA0C01S/view?usp=sharing) [Hashtable](https://github.com/njha-collab/Algorithms/blob/master/src/basic/hashing/)\n  - [Chaining](https://github.com/njha-collab/Algorithms/blob/master/src/basic/hashing/chaining/HashTableTest.java)\n  - [Open Addressing](https://github.com/njha-collab/Algorithms/blob/master/src/basic/hashing/openaddressing/HashTableTest.java)\n* [:blue_book:](https://drive.google.com/file/d/1pBnFDa2iOlUfo5lcVeiRdiVnZn2sc-pc/view?usp=sharing) [Union Find](https://github.com/njha-collab/Algorithms/blob/master/src/basic/unionfind)\n  - [Union Find - Merge By Rank](https://github.com/njha-collab/Algorithms/blob/master/src/basic/unionfind/UnionFindMergeByRank.java)\n  - [Union Find - Merge By Size](https://github.com/njha-collab/Algorithms/blob/master/src/basic/unionfind/UnionFind.java)\n* [:blue_book:](https://drive.google.com/file/d/1E2o4U1md4EK9O9Klv3BsP5bfyXYUS-2h/view?usp=sharing) [Heap (Priority Queues)](https://github.com/njha-collab/Algorithms/blob/master/src/tree/heap/)\n  - [Max Heap](https://github.com/njha-collab/Algorithms/blob/master/src/tree/heap/MaxHeapTest.java)\n  - [Min Heap](https://github.com/njha-collab/Algorithms/blob/master/src/tree/heap/MinHeapTest.java)\n* [:blue_book:](https://drive.google.com/drive/folders/19bfBzFUf6uRLMWV7LjPm_BO32odRUEs3?usp=sharing) [Self-Balancing BSTs](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/)\n  - [:blue_book:](https://drive.google.com/file/d/1LrCbfVkvHhdCETeGw2EkoJNv5SlYJNH6/view?usp=sharing) [AVL Tree](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/AVLTree.java)\n  - [:blue_book:](https://drive.google.com/file/d/1xSkXnlfFgmHMleDiMyWN9NzKFej-dur9/view?usp=sharing) [Red-Black Tree](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/RedBlackTree.java)\n* [:blue_book:](https://drive.google.com/file/d/1QUQCZLMmahpapweMxA1i3OsGVLvJuI95/view?usp=sharing) [Trie](https://github.com/njha-collab/Algorithms/tree/master/src/advance_ds/trie)\n* [:blue_book:](https://drive.google.com/file/d/1To7EjATwT1EB4c2GjnYd_QWJFwLL_zMb/view?usp=sharing) [Segment Tree](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/segment_tree/)\n  - [Range Minimum Query (RMQ)](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/segment_tree/RangeMinimumQuery.java)\n  - [Range Sum Query](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/segment_tree/RangeSumQuery.java)\n  - [RMQ - Lazy Propagation](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/segment_tree/SegmentTreeRMQLazy.java)\n* [:blue_book:](https://drive.google.com/file/d/1BVtkZjrGa0jFmn4PzGPli3331whmwXaw/view?usp=sharing) [Fenwick Tree](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/BinaryIndexedTree.java)\n* [:blue_book:](https://drive.google.com/file/d/1dBxCR6qKjK-6Cjs72M4-K2o-_v0TJMY7/view?usp=sharing) [LRU Cache](https://github.com/njha-collab/Algorithms/blob/master/src/advance_ds/lru_cache/LRUCache.java)\n\n## Dynamic Programming [Problems]\n[Sorted: Easy To Hard]\n1. [Fibonacci Numbers](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/FibonacciNumbers.java)\n2. [Ugly Numbers](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/UglyNumbers.java)\n3. [Super Ugly Numbers](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/SuperUglyNumbers.java)\n4. [Tiling 2Xn Floor With 2X1 Tile](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/Tiling2XnFloorWith2X1Tile.java)\n5. [Tiling NxM Floor With 1xM Tile](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/TilingNxMFloorWith1xMTile.java)\n6. [Gold Mine Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/GoldMineProblem.java)\n7. [Max Path Sum](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaxPathSum.java)\n8. [**Coin Change Problem**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/CoinChangeProblem.java):fire:\n9. [Friends Pairing Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/FriendsPairingProblem.java)\n10. [Subset Sum Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/SubsetSumProblem.java)\n11. [**Perfect Sum Problem**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/PerfectSumProblem.java):fire:\n12. [Subset Sum Divisible By M](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/SubsetSumDivisibleByM.java)\n13. [Change Making Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/ChangeMakingProblem.java)\n14. [Rod Cutting Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/RodCuttingProblem.java)\n15. [Tiling With Dominoes](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/TilingWithDominoes.java)\n16. [Painting Fence Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/PaintingFenceProblem.java)\n17. [Assembly Line Scheduling](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/AssemblyLineScheduling.java)\n18. [Maximum Length Snake Sequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumLengthSnakeSequence.java)\n19. [Even Length Binary Sequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/EvenLengthBinarySequence.java)\n20. [Sequences Of Given Length](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/SequencesOfGivenLength.java)\n21. [**Longest Common Subsequence**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/LongestCommonSubsequence.java):fire:\n22. [Longest Repeated Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/LongestRepeatedSubsequence.java)\n23. [LCS of 3 Strings](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/LcsOf3Strings.java)\n24. [**Longest Increasing Subsequence**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/LongestIncreasingSubsequence.java):fire:\n25. [Longest Bitonic Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestBitonicSubsequence.java)\n26. [Maximum Sum Increasing Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumSumIncreasingSubsequence.java)\n27. [Maximum Sum Bitonic Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumSumBitonicSubsequence.java)\n28. [Maximum Product Increasing Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumProductIncreasingSubsequence.java)\n29. [Product Subsequences Count](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/ProductSubsequencesCount.java)\n30. [Maximum Sum No Two Adjacent](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumSumNoTwoAdjacent.java)\n31. [Maximum Sum No Three Adjacent](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumSumNoThreeAdjacent.java)\n32. [Longest Subseq Adjacent Diff1](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/LongestSubseqAdjacentDiff1.java)\n33. [Max Length Chain Pairs](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaxLengthChainPairs.java)\n34. [Path With Maximum Average Value](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/PathWithMaximumAverageValue.java)\n35. [Min Cost Path](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MinCostPath.java)\n36. [Max Path Sum Triangle](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaxPathSumTriangle.java)\n37. [Min Path Sum Triangle](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MinPathSumTriangle.java)\n38. [**Maximum Sum Subarray - Kadane’s Algorithm**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumSumSubarray.java):fire:\n39. [Maximum Size Square Sub Matrix](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaximumSizeSquareSubMatrix.java)\n40. [Max Sum 2x1 Grid](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaxSum2x1Grid.java)\n41. [Max Path Sum With Jumps Under Div](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MaxPathSumWithJumpsUnderDiv.java)\n42. [Min Jumps To Reach End](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/MinJumpsToReachEnd.java)\n43. [Edit Distance](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/EditDistance.java)\n44. [**Longest Common Substring**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/LongestCommonSubstring.java):fire:\n45. [Sum Of All Substrings](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/SumOfAllSubstrings.java)\n46. [Count Ways To Build Street](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/WaysToBuildStreet.java)\n47. [Cover Distance](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/CoverDistance.java)\n48. [Diff Ways To Sum](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/DiffWaysToSum.java)\n49. [**0-1 Knapsack**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/Knapsack.java):fire:\n50. [Temple Offering Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/TempleOffering.java)\n51. [Egg Dropping Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/EggDropping.java)\n52. [Dice Throw Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/DiceThrowProblem.java)\n53. [**Word Break Problem**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/WordBreakProblem.java):fire:\n54. [Box Stacking Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/BoxStackingProblem.java)\n55. [Longest Palindromic Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestPalindromicSubsequence.java)\n56. [Count All Palindromic Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountAllPalindromicSubsequence.java)\n57. [Longest Palindromic Substring](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestPalindromicSubstring.java)\n58. [Count All Palindrome SubStrings](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountAllPalindromeSubStrings.java)\n59. [Shortest Common Supersequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/ShortestCommonSupersequence.java)\n60. [Longest ZigZag or Alternating Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestZigZagSubsequence.java)\n61. [Maximum Sum ZigZag or Alternating Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximumSumZigZagSubsequence.java)\n62. [Minimum Number of Coins To Make a Change](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MinCoinsToMakeChange.java)\n63. [Possible Ways To Construct Buildings](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/PossibleWaysToConstructBuildings.java)\n64. [Number Different Ways To Reach End](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/DifferentWaysToReachEnd.java)\n65. [Count Number of Binary Strings Without Consecutive 1s](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountBinaryStringsWithoutConsecutive1.java)\n66. [Count Number of Paths With At Most k Turns](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountPathsWithUpperLimitOnTurns.java)\n67. [Count Possible Decodings of Digit Sequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountDecodingsDigitSequence.java)\n68. [Number of Ways To Partition A Set Into k Subsets](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/PartitionSetIntoKsubsets.java)\n69. [Count n Digit Numbers With Given Digit Sum](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountNumbersWithGivenSum.java)\n70. [Count Strings Formed Using a b c](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountStringWithABC.java)\n71. [Count Numbers With Even Odd Digit Sum Difference of 1](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountNumsWithEvenOddSumDiff1.java)\n72. [Maximum Profit From Sale of Wines](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaxProfitWineSale.java)\n73. [Maximum Size Subset Sum](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaxSizeSubsetSum.java)\n74. [Maximum Sum Subarray Removing At Most One Element](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximumSumSubarrayRemovingAtMostOneElement.java)\n75. [K maximum sums of non-overlapping contiguous sub-arrays](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/KmaximumSumsNonOverlappingContiguousSubArrays.java)\n76. [Maximum Product Subarray](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximumProductSubarray.java)\n77. [Maximum Dot Product of Two Arrays](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximumDotProductTwoArrays.java)\n78. [**Minimum Initial Points to Reach Destination (Dungeon Game)**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MinimumInitialPointsToReachDestination.java):fire:\n79. [Minimum Insertions To Form Palindrome](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MinimumInsertionsToFormPalindrome.java)\n80. [Minimum Number of Squares Sum to Given Number](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/SquareSumToNumber.java)\n81. [Remove Minimum Elements From Either Side](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/RemoveMinElementsFromEitherSide.java)\n82. [Minimum Cells Required To Reach Destination](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MinCellsRequiredToReachDestination.java)\n83. [Longest Increasing Circular Subsequence](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestIncreasingCircularSubsequence.java)\n84. [Longest Path In A Matrix With Given Constraints](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestPathInMatrixFourDirections.java)\n85. [Count Distinct Subsequences](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/DistinctSubsequences.java)\n86. [Longest Consecutive Path In Matrix](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestConsecutivePathInMatrix.java)\n87. [Length of longest subsequence of one string which is substring of another string](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LCSubSeqSubStr.java)\n88. [Wildcard Pattern Matching](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/WildcardPatternMatching.java)\n89. [Optimal Strategy For Game](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/OptimalStrategyForGame.java)\n90. [Number of Permutations With K Inversions](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/NumberOfPermutationsWithKInversions.java)\n91. [Largest Divisible Pairs Subset](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LargestDivisiblePairsSubset.java)\n92. [Sum Of Digits In Numbers From 1 To N](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/SumOfDigitsFrom1ToN.java)\n93. [Number of Non Decreasing Numbers](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/NumberOfNonDecreasingNumbers.java)\n94. [Catalan Number](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/CatalanNumber.java) [:blue_book:](https://drive.google.com/file/d/1iJAoakEGHhNeFhBJ8ncW-PlO8jh0veuI/view?usp=sharing)\n95. [Non-crossing lines to connect points in a circle](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/NonCrossingHandShakes.java)\n96. [Building Bridges](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/BuildingBridges.java)\n97. [Longest Substring Without Repeating Characters](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestSustringWithoutRepeatingCharacters.java)\n98. [Longest Even Length Substring such that Sum of First and Second Half is same](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/LongestEvenLengthSubstr.java)\n99. [Partition Set To Subset Sum Minimum Diff](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/PartitionSetToSubsetSumMinimumDiff.java)\n100. [**Matrix Chain Multiplication**](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MatrixChainMultiplication.java):fire:\n101. [Minimum and Maximum values of an expression](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MinAndMaxValueOfExpr.java)\n102. [Optimal Binary Search Tree](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/OptimalBinarySearchTree.java)\n103. [Regular Expression Matching](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/RegularExpressionMatching.java)\n104. [Text Justification](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/TextJustification.java)\n105. [Palindrome Partitioning](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/PalindromePartitioning.java)\n106. [Mobile Numeric Keypad Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MobileNumericKeypadProblem.java)\n107. [The Painters Partition Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/PaintersPartitionProblem.java)\n108. [Boolean Parenthesization Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/BooleanParenthesizationProblem.java)\n109. [Number of Palindromic Paths In A Matrix](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/CountPalindromicPathsInMatrix.java)\n110. [Maximum Sum Rectangle In a 2D Matrix](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MaximumSumRectangleInMatrix.java)\n111. [Largest Rectangular SubMatrix With Zero Sum](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/LargestRectangularSubMatrixZeroSum.java)\n112. [Largest Rectangular SubMatrix With Equal Number of 1s and 0s](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/LargestRectangularSubMatrixWithEqual1sAnd0s.java)\n113. [Print Maximum Number of A's Using 4 Keys](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/PrintMaximumNumberOfAs.java)\n114. [Maximum Profit By Buying And Selling A Share At Most Twice](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximumProfitByBuyingAndSellingShareAtMostTwice.java)\n115. [Maximum Profit By Buying And Selling A Share At Most K Times](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MaximumProfitByBuyingAndSellingShareAtMostKtimes.java)\n116. [Maximum Size Rectangle Of All 1s](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximumSizeRectangleOfAll1s.java)\n117. [Count Number of BSTs - Catalan Number](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/CountNumberOfBSTs.java)\n118. [Maximize Expression A[j] - A[i] + A[l] - A[k]](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MaximizeExpression.java)\n119. [Minimum Cost Polygon Triangulation](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MinimumCostPolygonTriangulation.java)\n120. [Minimum Possible Size of Array With Given Rules For Removing Elements](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MinPossibleSizeOfArray.java)\n121. [Longest Arithmetic Progression](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/LongestArithmeticProgression.java)\n122. [Probability of Knight to Remain In The Chessboard](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/ProbabilityOfKnightToRemainInChessboard.java)\n123. [Number of Subsequences of The Form a^i b^j c^k](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/NumberOfSubsequences.java)\n124. [Check If All People Can Vote On Two Machines](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/CheckIfAllPeopleCanVoteOn2Machines.java)\n125. [Number of Subsequences In A String Divisible By N](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/NumberOfSubsequencesDivisibleByN.java)\n126. [Highway Billboard Problem](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/HighwayBillboardProblem.java)\n127. [Longest Subseq Adjacent Diff01](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/basic/LongestSubseqAdjacentDiff01.java)\n128. [Maximum Weight Transformation of A Given String](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MaximumWeightTransformationOfString.java)\n129. [String Interleaved of Two Other String](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/StringInterleavedOfTwoOtherString.java)\n130. [Weighted Job Scheduling](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/WeightedJobScheduling.java)\n131. [Burst Balloon [Leetcode #312]](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/BurstBalloons.java)\n132. [Range Sum Query 2D - Immutable [Leetcode #304]](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/ImmutableRangeSumQuery2D.java)\n133. [Maximum Subsquare With Sides As X](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximumSubsquareWithSidesAsX.java)\n134. [Maximize Binary Matrix By Filpping Submatrix Once](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/MaximizeBinaryMatrixByFilppingSubmatrixOnce.java)\n135. [Ways To Arrange Balls Such That Adjacent Balls Are of Different Types](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/WaysToArrangeBalls.java)\n136. [Ways of Transforming One String To Another By Removing Characters](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/intermediate/WaysOfTransformingOneStringToAnother.java)\n137. [Maximum Subarray Sum Excluding Certain Elements](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MaxSubarraySumExcludingCertainElements.java)\n138. [Maximum Points From Top Left To Bottom Right And Return Back](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MaximumPoints.java)\n139. [Longest Geometric Progression](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/LongestGeometricProgression.java)\n140. [Count AP (Arithmetic Progression) Subsequences In An Array](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/CountAPSubsequences.java)\n141. [All Ways To Add Parenthesis For Evaluation](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/AllWaysToAddParenthesisForEvaluation.java)\n142. [Minimum Cost To Sort Strings Using Reversals](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/MinimumCostToSortStringsUsingReversal.java)\n143. [Largest Minimum Sum Split Subarray](https://github.com/njha-collab/Algorithms/blob/master/src/dynamicprogramming/hard/LargestMinimumSumSplitSubarray.java)\n\n## [:blue_book:](https://drive.google.com/drive/folders/1tfkGKv_wtKX7ui36fkjfpe5XGUqlc8rc?usp=sharing) Sorting Algorithms\n  * [Merge Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/MergeSort.java) **- O(nlgn)**\n  * [QuickSort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/QuickSort.java) **- Θ(nlgn)**\n  * [Heap Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/HeapSort.java) **- O(nlgn)**\n  * [Tim Sort](https://drive.google.com/file/d/1dGkNfCcXM5K8s1-mKowcUjyvsxMbQtxZ/view?usp=sharing) :blue_book: **- O(nlgn)**\n  * [Bubble Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/BubbleSort.java) **- O(n\u003csup\u003e2\u003c/sup\u003e)**\n  * [Insertion Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/InsertionSort.java) **- O(n\u003csup\u003e2\u003c/sup\u003e)**\n  * [Shell Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/Shell.java) **- O(n\u003csup\u003e2\u003c/sup\u003e)**\n  * [Counting Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/CountingSort.java) **- O(n + k)**\n  * [Bucket Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/BucketSort.java) **- Θ(n + k)**\n  * [Radix Sort](https://github.com/njha-collab/Algorithms/blob/master/src/sorting/RadixSort.java) **- O(d\\*n)**\n\n## [:blue_book:](https://drive.google.com/file/d/1VghYyVfJsGJsDrHWp8hv_RfNoXjw7w53/view?usp=sharing) Graph Theory\n  * [Adjacency List Representation](https://github.com/njha-collab/Algorithms/blob/master/src/graph/Graph.java), [Adjacency List Representation 2](https://github.com/njha-collab/Algorithms/blob/master/src/graph/GraphUsingArrayOfArray.java)\n  * [BFS](https://github.com/njha-collab/Algorithms/blob/master/src/graph/BreadthFirstSearch.java) **- O(V+E)**\n    - [Shortest Path In Unweighted Graph](https://github.com/njha-collab/Algorithms/blob/master/src/graph/ShortestPathUnweightedGraph.java) **- O(V+E)**\n    - [Shortest Path On A Grid](https://github.com/njha-collab/Algorithms/blob/master/src/graph/ShortestPathOnAGrid.java) **- O(V+E)**\n  * [DFS](https://github.com/njha-collab/Algorithms/blob/master/src/graph/DepthFirstSearch.java) **- O(V+E)**\n    - [ConnectedComponents](https://github.com/njha-collab/Algorithms/blob/master/src/graph/ConnectedComponents.java) **- O(V+E)**\n    - [TransitiveClosure](https://github.com/njha-collab/Algorithms/blob/master/src/graph/TransitiveClosure.java) **- O(V+E)**\n  * [Topological Sorting](https://github.com/njha-collab/Algorithms/blob/master/src/graph/TopologicalSorting.java) **- O(V+E)**\n  * Cycle Detection\n    - [In Directed Graph - Using DFS](https://github.com/njha-collab/Algorithms/blob/master/src/graph/CycleInDirectedGraph.java) **- O(V+E)**\n    - [In Undirected Graph - Using DFS](https://github.com/njha-collab/Algorithms/blob/master/src/graph/CycleInUndirectedGraph.java) **- O(V+E)**\n    - [In Undirected Graph - Using Union Find](https://github.com/njha-collab/Algorithms/blob/master/src/graph/FindCycleUnionFind.java) **- O(E)**\n  * [Connected Components - Using Union Find](https://github.com/njha-collab/Algorithms/blob/master/src/graph/NumberOfConnectedComponentsUnionFind.java) **- O(E)**\n  * Single-Source Shortest Paths Algorithms\n    - [The Bellman-Ford Algorithm](https://github.com/njha-collab/Algorithms/blob/master/src/graph/BellmanFord.java) **- O(VE)**\n    - [Dijkstra's Algorithm](https://github.com/njha-collab/Algorithms/blob/master/src/graph/DijkstrasShortestPath.java) **- O((E+V)\\*lgV)**\n    - [Shortest path in a DAG](https://github.com/njha-collab/Algorithms/blob/master/src/graph/ShortestPathInDAG.java) **- O(V+E)**\n    - [Longest path in a DAG](https://github.com/njha-collab/Algorithms/blob/master/src/graph/LongestPathInDAG.java) **- O(V+E)**\n  * [All-Pair Shortest Path: Floyd-Warshall Algorithm](https://github.com/njha-collab/Algorithms/blob/master/src/graph/FloydWarshallAPSP.java) **- O(V\u003csup\u003e3\u003c/sup\u003e)**\n  * [Bridges In Undirected Graph](https://github.com/njha-collab/Algorithms/blob/master/src/graph/Bridges.java) **- O(V+E)**\n  * [Articulation Points In Undirected Graph](https://github.com/njha-collab/Algorithms/blob/master/src/graph/ArticulationPoints.java) **- O(V+E)**\n  * Strongly Connected Components \n    - [Tarjan’s Algorithm](https://github.com/njha-collab/Algorithms/blob/master/src/graph/TarjansAlgorithmForSCC.java) **- O(V+E)**\n    - [Kosaraju’s Algorithm](https://github.com/njha-collab/Algorithms/blob/master/src/graph/KosarajusAlgorithmForSCC.java) **- O(V+E)**\n  * Travelling Salesman Problem \n    - [Brute-Force Approach](https://github.com/njha-collab/Algorithms/blob/master/src/graph/TspBruteForce.java) **- O(n!)**\n    - [DP Iterative Approach](https://github.com/njha-collab/Algorithms/blob/master/src/graph/TspDynamicProgrammingIterative.java) **- O(n\u003csup\u003e2\u003c/sup\u003e2\u003csup\u003en\u003c/sup\u003e)**\n    - [DP Recursive Approach](https://github.com/njha-collab/Algorithms/blob/master/src/graph/TspDynamicProgrammingRecursive.java) **- O(n\u003csup\u003e2\u003c/sup\u003e2\u003csup\u003en\u003c/sup\u003e)**\n  * [Eulerian Path (Directed Graph)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/EulerianPathDirectedGraph.java) **- O(V+E)**\n  * Minimum Spanning Trees\n    - [Kruskal's Algorithm Using Union Find](https://github.com/njha-collab/Algorithms/blob/master/src/graph/KruskalsMST.java) **- O(ElgE)**\n    - [Kruskal's Algorithm Using Union Find - Lazy Sorting Using Priority Queue](https://github.com/njha-collab/Algorithms/blob/master/src/graph/KruskalsMstLazySortingUsingPriorityQueue.java) **- O(ElgE)**\n    - [Prim's Algorithm For MST](https://github.com/njha-collab/Algorithms/blob/master/src/graph/PrimsMst.java) **- O(ElgE)**\n    \n  ### Network Flow\n   * [Max flow, Min cut (Ford-Fulkerson using DFS, adjacency list)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/FordFulkersonDfsAdjacencyList.java) **- O(fE)**\n   * [Max flow, Min cut (Ford-Fulkerson using DFS, adjacency matrix)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/FordFulkersonDfsAdjacencyMatrix.java) **- O(fV\u003csup\u003e2\u003c/sup\u003e)**\n   * [Maximum Cardinality Bipartite Matching (Using Ford-Fulkerson DFS based Max Flow)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/MaximumCardinalityBipartiteMatchingMaxFlow.java) **- O(nE)**\n   * [[Problem]: Mice And Owls (Bipartite Matching)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/MiceAndOwls.java)\n   * [[Problem]: Elementry Math (Bipartite Matching)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/ElementryMath.java)\n   * [Bipartite graph verification (adjacency list, DFS)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/BipartiteGraphCheckAdjacencyList.java) **- O(V+E)**\n   * [Max flow, Min cut (Edmonds-Karp, adjacency list)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/EdmondsKarpAdjacencyList.java) **- O(VE\u003csup\u003e2\u003c/sup\u003e)**\n   * [Max flow, Min cut (Capacity scaling, adjacency list)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/CapacityScalingAdjacencyList.java) **- O(E\u003csup\u003e2\u003c/sup\u003elgU)**\n   * [Max flow, Min cut (Dinic's, adjacency list)](https://github.com/njha-collab/Algorithms/blob/master/src/graph/networkflow/DinicsAdjacencyList.java) **- O(EV\u003csup\u003e2\u003c/sup\u003e), O(E√V) for bipartite graphs**\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaren-jha%2Falgorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaren-jha%2Falgorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaren-jha%2Falgorithms/lists"}