This repository contains a carefully curated set of Dynamic Programming problems organized by day, each with a direct link to the Java solution file in this repo.
For every problem, you get:
- The question name and code file link
- A YouTube search link for video explanations
- A reference/documentation link for official/community solutions
Day 1/
ClimbingStairs.java
DPIntro.java
FrogJump.java
FrogJumpK.java
HouseRobber.java
MaxNonAdjacentSum.java
Day 2/
GridUniquePaths.java
GridUniquePaths2.java
MinMaxFallingPath.java
MinPathSumGrid.java
NinjaAndFriends3D.java
NinjasTraining.java
TriangleMinPathSum.java
Day 3/
AssignCookies.java
CoinChange2.java
CountPartitionsGivenDiff.java
CountSubsetsSumK.java
MinSubsetSumDifference.java
MinimumCoins.java
PartitionEqualSubsetSum.java
RodCuttingProblem.java
SubsetSumEqualToTarget.java
TargetSum.java
UnboundedKnapsack.java
Day 4/
DistinctSubsequences.java
EditDistance.java
LongestCommonSubsequence.java
LongestCommonSubstring.java
LongestPalindromicSubsequence.java
MinInsertDeleteToConvertString.java
MinimumInsertionsToMakePalindrome.java
PrintLCS.java
ShortestCommonSupersequence.java
WildcardMatching.java
Day 5/
BestTimeToBuySellStock1.java
BestTimeToBuySellStock2.java
BestTimeToBuySellStockAtMostTwoTransactions.java
BestTimeToBuySellStockKTransactions.java
BestTimeToBuySellStockWithCooldown.java
BestTimeToBuySellStockWithTransactionFee.java
Day 6/
LongestBitonicSubsequence.java
LongestDivisibleSubset.java
LongestIncreasingSubsequence.java
LongestIncreasingSubsequenceBinarySearch.java
LongestStringChain.java
NumberOfLIS.java
PrintLongestIncreasingSubsequence.java
Day 7/
BurstBalloons.java
EvaluateBooleanToTrue.java
MatrixChainMultiplication.java
MatrixChainMultiplicationBottomUp.java
MinimumCostToCutStick.java
PalindromePartitioningII.java
PartitionArrayForMaxSum.java
Day 8/
CountSquareSubmatricesWithAllOnes.java
MaximalRectangleArea.java
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | ClimbingStairs.java | YouTube | LeetCode |
2 | DPIntro.java | YouTube | GFG |
3 | FrogJump.java | YouTube | CodingNinjas |
4 | FrogJumpK.java | YouTube | CodingNinjas |
5 | HouseRobber.java | YouTube | LeetCode |
6 | MaxNonAdjacentSum.java | YouTube | GFG |
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | GridUniquePaths.java | YouTube | LeetCode |
2 | GridUniquePaths2.java | YouTube | LeetCode |
3 | MinMaxFallingPath.java | YouTube | LeetCode |
4 | MinPathSumGrid.java | YouTube | LeetCode |
5 | NinjaAndFriends3D.java | YouTube | CodingNinjas |
6 | NinjasTraining.java | YouTube | CodingNinjas |
7 | TriangleMinPathSum.java | YouTube | LeetCode |
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | AssignCookies.java | YouTube | LeetCode |
2 | CoinChange2.java | YouTube | LeetCode |
3 | CountPartitionsGivenDiff.java | YouTube | GFG |
4 | CountSubsetsSumK.java | YouTube | GFG |
5 | MinSubsetSumDifference.java | YouTube | GFG |
6 | MinimumCoins.java | YouTube | GFG |
7 | Partiti 8000 onEqualSubsetSum.java | YouTube | LeetCode |
8 | RodCuttingProblem.java | YouTube | GFG |
9 | SubsetSumEqualToTarget.java | YouTube | GFG |
10 | TargetSum.java | YouTube | LeetCode |
11 | UnboundedKnapsack.java | YouTube | GFG |
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | DistinctSubsequences.java | YouTube | LeetCode |
2 | EditDistance.java | YouTube | LeetCode |
3 | LongestCommonSubsequence.java | YouTube | LeetCode |
4 | LongestCommonSubstring.java | YouTube | GFG |
5 | LongestPalindromicSubsequence.java | YouTube | LeetCode |
6 | MinInsertDeleteToConvertString.java | YouTube | GFG |
7 | MinimumInsertionsToMakePalindrome.java | YouTube | LeetCode |
8 | PrintLCS.java | YouTube | GFG |
9 | ShortestCommonSupersequence.java | YouTube | LeetCode |
10 | WildcardMatching.java | YouTube | LeetCode |
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | BestTimeToBuySellStock1.java | YouTube | LeetCode |
2 | BestTimeToBuySellStock2.java | YouTube | LeetCode |
3 | BestTimeToBuySellStockAtMostTwoTransactions.java | YouTube | LeetCode |
4 | BestTimeToBuySellStockKTransactions.java | YouTube | LeetCode |
5 | BestTimeToBuySellStockWithCooldown.java | YouTube | LeetCode |
6 | BestTimeToBuySellStockWithTransactionFee.java | YouTube | LeetCode |
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | LongestBitonicSubsequence.java | YouTube | GFG |
2 | LongestDivisibleSubset.java | YouTube | LeetCode |
3 | LongestIncreasingSubsequence.java | YouTube | LeetCode |
4 | LongestIncreasingSubsequenceBinarySearch.java | YouTube | LeetCode |
5 | LongestStringChain.java | YouTube | LeetCode |
6 | NumberOfLIS.java | YouTube | LeetCode |
7 | PrintLongestIncreasingSubsequence.java | YouTube | GFG |
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | BurstBalloons.java | YouTube | LeetCode |
2 | EvaluateBooleanToTrue.java | YouTube | GFG |
3 | MatrixChainMultiplication.java | YouTube | GFG |
4 | MatrixChainMultiplicationBottomUp.java | YouTube | GFG |
5 | MinimumCostToCutStick.java | YouTube | LeetCode |
6 | PalindromePartitioningII.java | YouTube | LeetCode |
7 | PartitionArrayForMaxSum.java | YouTube | LeetCode |
# | Problem (code file) | YouTube Java Explanations | Docs/Reference |
---|---|---|---|
1 | CountSquareSubmatricesWithAllOnes.java | YouTube | LeetCode |
2 | MaximalRectangleArea.java | YouTube | LeetCode |
- Always up-to-date: Find the latest and most relevant explanations.
- Multiple perspectives: Compare different approaches and educators.
- GeeksforGeeks - Dynamic Programming
- LeetCode - DP Tag
- Coding Ninjas - DP Problems
- Java DP Tutorials (YouTube)
If a documentation link is broken or outdated, simply search for the question title on GeeksforGeeks or LeetCode with "Java".
- Spot an error or want to add a new resource? Submit a PR or open an issue!
- Want more categories? Open a discussion.
Happy Learning and Coding! 🚀