Skip to content

Commit 1c45920

Browse files
committed
Added Longest Increasing Subsequence using Recursion
1 parent a0b6c52 commit 1c45920

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.thealgorithms.recursion;
2+
3+
public class LongestIncreasingSubsequence {
4+
5+
public static int solve(int[] nums, int prev, int idx) {
6+
// base case
7+
if (idx == nums.length) return 0;
8+
9+
// process
10+
// 1. include
11+
// 2. exclude
12+
int include = 0;
13+
if (prev == -1 || nums[idx] > nums[prev]) {
14+
include = 1 + solve(nums, idx, idx + 1);
15+
}
16+
17+
int exclude = solve(nums, prev, idx + 1);
18+
return Math.max(include, exclude);
19+
}
20+
21+
public int lengthOfLIS(int[] nums) {
22+
int prev = -1;
23+
return solve(nums, prev, 0);
24+
}
25+
26+
public static void main(String[] args) {
27+
int[] nums = {10, 22, 9, 33, 21, 50, 41, 60};
28+
LongestIncreasingSubsequence lis = new LongestIncreasingSubsequence();
29+
System.out.println("Length of LIS: " + lis.lengthOfLIS(nums));
30+
}
31+
}

0 commit comments

Comments
 (0)