File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ # Time Complexity: O(n)
3+ # Space Complexity: O(n)
4+ */
5+ class Solution {
6+ public int rob (int [] nums ) {
7+ int n = nums .length ;
8+ if (n == 1 ) return nums [0 ];
9+
10+ int [][][] dp = new int [n ][2 ][2 ];
11+
12+ dp [0 ][0 ][0 ] = 0 ;
13+ dp [0 ][0 ][1 ] = 0 ;
14+ dp [0 ][1 ][0 ] = 0 ; //
15+ dp [0 ][1 ][1 ] = nums [0 ];
16+ for (int i = 1 ; i < n - 1 ; i ++) {
17+ dp [i ][0 ][0 ] = Math .max (dp [i - 1 ][0 ][0 ], dp [i - 1 ][1 ][0 ]);
18+ dp [i ][0 ][1 ] = Math .max (dp [i - 1 ][0 ][1 ], dp [i - 1 ][1 ][1 ]);
19+ dp [i ][1 ][0 ] = dp [i - 1 ][0 ][0 ] + nums [i ];
20+ dp [i ][1 ][1 ] = dp [i - 1 ][0 ][1 ] + nums [i ];
21+ }
22+
23+ dp [n - 1 ][0 ][0 ] = Math .max (dp [n - 2 ][0 ][0 ], dp [n - 2 ][1 ][0 ]);
24+ dp [n - 1 ][0 ][1 ] = Math .max (dp [n - 2 ][0 ][1 ], dp [n - 2 ][1 ][1 ]);
25+ dp [n - 1 ][1 ][0 ] = dp [n - 2 ][0 ][0 ] + nums [n - 1 ];
26+ dp [n - 1 ][1 ][1 ] = -1 ;
27+
28+ return Math .max (Math .max (dp [n - 1 ][0 ][0 ], dp [n - 1 ][0 ][1 ]), dp [n - 1 ][1 ][0 ]);
29+ }
30+ }
You can’t perform that action at this time.
0 commit comments