198戦利品
あなたは、家の通りの計画を盗むためにプロの泥棒です。同じ夜上の2つの隣接する家は、泥棒がシステムに侵入した場合の各部屋にはいくつかの現金を所持している、影響を与える唯一の制約は、相互に通信し、あなたの隣人の家は、盗難防止システムが装備されて盗む自動的に警報。
もし警報装置に触れていない場合に算出ハウジングストレージ量の各非負整数のアレイからの代表与え、に最大量を盗むことができます。
例1:
入力:[1,2,3,1]
出力:4
説明:ハウジング盗難番号1(量= 1)、次いで盗難ハウジング3(量= 3)。
盗難= 3 + 1 = 4の最大量。
例2:
入力:[2,7,9,3,1]
出力:12
説明:ハウジング盗難番号1(量= 2)、3盗難ハウジング(量= 9)、盗難第5ハウジング(量= 1)を行いました。
盗難= 2 + 9 + 1 = 12に最大量。
class Solution {
public int rob(int[] nums) {
int n = nums.length;
if (n <= 1) return n == 0 ? 0 : nums[0];
int[] memo = new int[n];
memo[0] = nums[0];
memo[1] = Math.max(nums[0], nums[1]);
for (int i = 2; i < n; i++)
memo[i] = Math.max(memo[i - 1], nums[i] + memo[i - 2]);
return memo[n - 1];
}
}