You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and **it will automatically contact the police if two adjacent houses were broken into on the same night**.

Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight **without alerting the police**.

//Use dynamic programming by creating an array that could store the results given the nums[]
public int rob(int[] nums) {
int l = nums.length;
int[] array = new int[l];
//Base case discussion:
if (l == 0) {
return 0;
}
if (l == 1) {
return nums[0];
}
if (l == 2) {
return Math.max(nums[0], nums[1]);
}
array[0] = nums[0];
array[1] = Math.max(nums[0], nums[1]);
//Dynamic program needs an array that stores the result of each case:
for (int i = 2; i < l; i++) {
array[i] = Math.max((array[i-2] + nums[i]), array[i-1]);
}
return array[l-1];
}

### Like this:

Like Loading...

*Related*