Dynamic Programming/Longest Increasing Subsequence
subsequencepatience-sortordering
Press play to start
1int lis(int arr[], int n) {
2 int dp[n];
3 for (int k = 0; k < n; k++) dp[k] = 1;
4 for (int i = 1; i < n; i++) {
5 for (int j = 0; j < i; j++) {
6 if (arr[j] < arr[i] && dp[j] + 1 > dp[i])
7 dp[i] = dp[j] + 1;
8 }
9 }
10 int max = 0;
11 for (int k = 0; k < n; k++) if (dp[k] > max) max = dp[k];
12 return max;
13}
Step 1/0

Practice

LeetCode·#300 Longest Increasing SubsequenceMediumHackerRank·Longest Increasing SubsequenceHardNeetCode·Longest Increasing SubsequenceMedium
BestO(n²)
AverageO(n²)
WorstO(n²)
SpaceO(n)