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