File tree 1 file changed +44
-0
lines changed 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * TC: O(N)
3
+ * SC; O(1)
4
+ */
5
+
6
+ /**
7
+ * @param {number[] } nums
8
+ * @return {number }
9
+ */
10
+ var rob = function ( nums ) {
11
+ if ( nums . length < 4 ) {
12
+ return Math . max ( ...nums ) ;
13
+ }
14
+
15
+ let prevprevprev = nums [ 0 ] ;
16
+ let prevprev = nums [ 1 ] ;
17
+ let prev = nums [ 0 ] + nums [ 2 ] ;
18
+
19
+ for ( let index = 3 ; index < nums . length - 1 ; index ++ ) {
20
+ const current = Math . max ( prevprevprev , prevprev ) + nums [ index ] ;
21
+
22
+ prevprevprev = prevprev ;
23
+ prevprev = prev ;
24
+ prev = current ;
25
+ }
26
+
27
+ const resultWithoutLast = Math . max ( prevprevprev , prevprev , prev ) ;
28
+
29
+ prevprevprev = nums [ 1 ] ;
30
+ prevprev = nums [ 2 ] ;
31
+ prev = nums [ 1 ] + nums [ 3 ] ;
32
+
33
+ for ( let index = 4 ; index < nums . length ; index ++ ) {
34
+ const current = Math . max ( prevprevprev , prevprev ) + nums [ index ] ;
35
+
36
+ prevprevprev = prevprev ;
37
+ prevprev = prev ;
38
+ prev = current ;
39
+ }
40
+
41
+ const resultWithoutFirst = Math . max ( prevprevprev , prevprev , prev ) ;
42
+
43
+ return Math . max ( resultWithoutLast , resultWithoutFirst ) ;
44
+ } ;
You can’t perform that action at this time.
0 commit comments