1
+ class Solution {
2
+ public int findLHS (int [] nums ) {
3
+ int maxLength = 0 ;
4
+ Map <String , Map <String , Object >> harmoniousMap = new HashMap <String , Map <String , Object >>();
5
+
6
+ for (int num : nums ) {
7
+ String prevKey = String .valueOf (num - 1 ) + "X" + String .valueOf (num ),
8
+ nextKey = String .valueOf (num ) + "X" + String .valueOf (num + 1 );
9
+
10
+ if (harmoniousMap .get (prevKey ) == null ) {
11
+ Map <String , Object > m = new HashMap <String , Object >();
12
+ m .put ("length" , 1 );
13
+ m .put ("base" , num );
14
+ m .put ("isHarmonious" , false );
15
+ harmoniousMap .put (prevKey , m );
16
+ } else {
17
+ Map <String , Object > m = harmoniousMap .get (prevKey );
18
+ m .put ("length" , (Integer ) m .get ("length" ) + 1 );
19
+ if (!((Integer ) m .get ("base" )).equals (num )) {
20
+ m .put ("isHarmonious" , true );
21
+ }
22
+ if ((Boolean ) m .get ("isHarmonious" )) {
23
+ maxLength = Math .max (maxLength , (Integer ) m .get ("length" ));
24
+ }
25
+ }
26
+
27
+ if (harmoniousMap .get (nextKey ) == null ) {
28
+ Map <String , Object > m = new HashMap <String , Object >();
29
+ m .put ("length" , 1 );
30
+ m .put ("base" , num );
31
+ m .put ("isHarmonious" , false );
32
+ harmoniousMap .put (nextKey , m );
33
+ } else {
34
+ Map <String , Object > m = harmoniousMap .get (nextKey );
35
+ m .put ("length" , (Integer ) m .get ("length" ) + 1 );
36
+ if (!((Integer ) m .get ("base" )).equals (num )) {
37
+ m .put ("isHarmonious" , true );
38
+ }
39
+ if ((Boolean ) m .get ("isHarmonious" )) {
40
+ maxLength = Math .max (maxLength , (Integer ) m .get ("length" ));
41
+ }
42
+ }
43
+ }
44
+
45
+ return maxLength ;
46
+ }
47
+ }
0 commit comments