File tree 1 file changed +53
-0
lines changed
1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int solvetab (vector<int > &nums)
4
+ {
5
+ vector<vector<int >> dp (nums.size ()+3 ,vector<int >(nums.size ()+3 ,0 ));
6
+ for (int curr= nums.size ()-1 ;curr>=0 ;curr--)
7
+ {
8
+ for (int prev=curr-1 ;prev>=-1 ;prev--)
9
+ {
10
+
11
+ int inc=0 ;
12
+ // include
13
+ if (prev==-1 ||nums[curr]>nums[prev])
14
+ {
15
+ inc= 1 +dp[curr+1 ][curr+1 ];
16
+ }
17
+ int excl=dp[curr+1 ][prev+1 ];
18
+ dp[curr][prev+1 ]=max (inc,excl);
19
+
20
+ }
21
+ }
22
+ return dp[0 ][0 ];
23
+ }
24
+ int solve (vector<int > &nums,int i,int prev,vector<vector<int >> &dp)
25
+ {
26
+ // base condition
27
+ if (i>=nums.size ())
28
+ {
29
+ return 0 ;
30
+ }
31
+ if (dp[i][prev+1 ]!=-1 )
32
+ {
33
+ return dp[i][prev+1 ];
34
+ }
35
+ // exclude
36
+ int excl=solve (nums,i+1 ,prev,dp);
37
+ int inc=0 ;
38
+ // include
39
+ if (prev==-1 ||nums[i]>nums[prev])
40
+ {
41
+ inc= 1 +solve (nums,i+1 ,i,dp);
42
+ }
43
+
44
+ return dp[i][prev+1 ]=max (inc,excl);
45
+
46
+ }
47
+ int lengthOfLIS (vector<int >& nums) {
48
+ // vector<vector<int>> dp(nums.size()+3,vector<int>(nums.size()+3,-1));
49
+ // return solve(nums,0,-1,dp);
50
+ return solvetab (nums);
51
+
52
+ }
53
+ };
You can’t perform that action at this time.
0 commit comments