From 1c45920f9b6f646ebb5339e2f1dd843d6674d7e2 Mon Sep 17 00:00:00 2001 From: prerita Date: Sat, 4 Oct 2025 22:44:33 +0530 Subject: [PATCH 1/3] Added Longest Increasing Subsequence using Recursion --- .../LongestIncreasingSubsequence.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java diff --git a/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java b/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java new file mode 100644 index 000000000000..1c855fc94c39 --- /dev/null +++ b/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java @@ -0,0 +1,31 @@ +package com.thealgorithms.recursion; + +public class LongestIncreasingSubsequence { + + public static int solve(int[] nums, int prev, int idx) { + // base case + if (idx == nums.length) return 0; + + // process + // 1. include + // 2. exclude + int include = 0; + if (prev == -1 || nums[idx] > nums[prev]) { + include = 1 + solve(nums, idx, idx + 1); + } + + int exclude = solve(nums, prev, idx + 1); + return Math.max(include, exclude); + } + + public int lengthOfLIS(int[] nums) { + int prev = -1; + return solve(nums, prev, 0); + } + + public static void main(String[] args) { + int[] nums = {10, 22, 9, 33, 21, 50, 41, 60}; + LongestIncreasingSubsequence lis = new LongestIncreasingSubsequence(); + System.out.println("Length of LIS: " + lis.lengthOfLIS(nums)); + } +} From cff01471d7047d157ee2e33337133927d283d868 Mon Sep 17 00:00:00 2001 From: prerita Date: Mon, 6 Oct 2025 18:42:39 +0530 Subject: [PATCH 2/3] Fixes Error --- .../recursion/LongestIncreasingSubsequence.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java b/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java index 1c855fc94c39..4d84fe010922 100644 --- a/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java +++ b/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java @@ -4,16 +4,15 @@ public class LongestIncreasingSubsequence { public static int solve(int[] nums, int prev, int idx) { // base case - if (idx == nums.length) return 0; + if (idx == nums.length) { + return 0; + } // process - // 1. include - // 2. exclude int include = 0; if (prev == -1 || nums[idx] > nums[prev]) { include = 1 + solve(nums, idx, idx + 1); } - int exclude = solve(nums, prev, idx + 1); return Math.max(include, exclude); } @@ -24,7 +23,7 @@ public int lengthOfLIS(int[] nums) { } public static void main(String[] args) { - int[] nums = {10, 22, 9, 33, 21, 50, 41, 60}; + int[] nums = {10, 9, 2, 5, 3, 7, 101, 18}; LongestIncreasingSubsequence lis = new LongestIncreasingSubsequence(); System.out.println("Length of LIS: " + lis.lengthOfLIS(nums)); } From 972bce0546dce334d699bcd1c2294227692f2d63 Mon Sep 17 00:00:00 2001 From: prerita Date: Mon, 6 Oct 2025 18:48:15 +0530 Subject: [PATCH 3/3] Fix --- .../recursion/LongestIncreasingSubsequence.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java b/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java index 4d84fe010922..4ca11927e6be 100644 --- a/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java +++ b/src/main/java/com/thealgorithms/recursion/LongestIncreasingSubsequence.java @@ -21,10 +21,4 @@ public int lengthOfLIS(int[] nums) { int prev = -1; return solve(nums, prev, 0); } - - public static void main(String[] args) { - int[] nums = {10, 9, 2, 5, 3, 7, 101, 18}; - LongestIncreasingSubsequence lis = new LongestIncreasingSubsequence(); - System.out.println("Length of LIS: " + lis.lengthOfLIS(nums)); - } }