File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 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