This repository contains Java programs that solve classic subsequence and permutation problems using recursion and backtracking.
-
GenerateAllSubsequences.java
➤ Generate all possible subsequences of an array using recursion. -
SubsequenceWithSumK.java
➤ Return all subsequences whose sum is equal to K. -
OneSubsequenceWithSumK.java
➤ Return any one subsequence whose sum is equal to K. -
CountSubsequenceWithSumK.java
➤ Count total number of subsequences whose sum is equal to K.
-
RandomizedQuickSort.java
➤ Sort an array using Hoare's partition and a random pivot (Quick Sort variant). -
MergeSort.java
➤ Sort an array using the Merge Sort algorithm.
-
CombinationSum.java
➤ Find all combinations where elements (can be reused multiple times) sum up to a target value. -
CombinationSum-II.java
➤ Find all unique combinations where each element is used at most once and the sum equals the target.
➤ Handles duplicates gracefully to avoid duplicate combinations. -
SubsetSums.java
➤ Return the sum of all subsets of a given array using recursion. -
SubsetsWithDup.java
➤ Generate all unique subsets of an array that may contain duplicates using backtracking.
-
Permutations_Approach_I.java
✅
➤ Generate all possible permutations of an array using backtracking with afreq[]
boolean array.
➤ Ensures that each element is used once per permutation. -
Permutations_Approach_II.java
✅
➤ Generate permutations using in-place swapping, reducing space overhead.
➤ Fix one index at a time and recursively swap the remaining elements.
Rahul Gupta
🎯 Building strong foundations in Recursion, Backtracking & DSA using Java.
- 🔜 N-Queens Problem
- 🔜 Palindrome Partitioning
- 🔜 Word Break (Backtracking + Memoization)