File tree Expand file tree Collapse file tree 1 file changed +69
-0
lines changed
longest-increasing-subsequence Expand file tree Collapse file tree 1 file changed +69
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .Arrays ;
2
+ import java .util .HashMap ;
3
+ import java .util .Map ;
4
+
5
+ // tc: O(n)
6
+ // idea: max largest subseq length for "N" th array index
7
+ class Solution {
8
+
9
+ public int lengthOfLIS (int [] nums ) {
10
+
11
+ int [] arr = new int [nums .length ];
12
+ Arrays .fill (arr , 1 );
13
+
14
+ for (int i = 1 ; i < nums .length ; i ++) {
15
+ for (int j = 0 ; j < i ; j ++) {
16
+ if (nums [j ] < nums [i ]) {
17
+ arr [i ] = Math .max (arr [i ], arr [j ] + 1 );
18
+ }
19
+ }
20
+ }
21
+
22
+ int mx = -987654321 ;
23
+ for (int anInt : arr ) {
24
+ System .out .print (anInt + " " );
25
+ mx = Math .max (mx , anInt );
26
+ }
27
+
28
+ return mx ;
29
+ }
30
+ }
31
+
32
+ // time limit exceed
33
+
34
+ class WrongSolution {
35
+
36
+ public boolean [] visit ;
37
+ public int mxVal = -987654321 ;
38
+ public int mx = 1 ;
39
+ public Map <Integer , Boolean > m = new HashMap <>();
40
+
41
+ public int lengthOfLIS (int [] nums ) {
42
+ for (int i = 0 ; i < nums .length ; i ++) {
43
+ m = new HashMap <>();
44
+ mxVal = Math .max (mxVal , nums [i ]);
45
+ m .put (nums [i ], true );
46
+ dfs (i , nums );
47
+ mxVal = -987654321 ;
48
+ }
49
+
50
+ return mx ;
51
+ }
52
+
53
+ public void dfs (int idx , int [] nums ) {
54
+ mx = Math .max (mx , m .size ());
55
+
56
+ for (int i = idx + 1 ; i < nums .length ; i ++) {
57
+ if (mxVal < nums [i ]) {
58
+ int prev = mxVal ;
59
+ mxVal = nums [i ];
60
+ m .put (nums [i ], true );
61
+
62
+ dfs (i , nums );
63
+
64
+ mxVal = prev ;
65
+ m .remove (nums [i ]);
66
+ }
67
+ }
68
+ }
69
+ }
You can’t perform that action at this time.
0 commit comments