php实现
<?php
function rob(array $nums) {
$n = count($nums);
if ($n === 0) return 0;
if ($n === 1) return $nums[0];
$dp = [$nums[0], max($nums[0], $nums[1])];
for ($i = 2; $i < $n; $i++) {
$dp[$i % 2] = max($dp[($i - 1) % 2], $nums[$i] + $dp[($i - 2) % 2]);
}
return $dp[($n - 1) % 2];
}
// 测试数组
$nums = [2, 7, 9, 3, 1];
echo rob($nums); // 输出应为 12
?>js实现
function rob(nums) {
const n = nums.length;
if (n === 0) return 0;
if (n === 1) return nums[0];
let dp = [nums[0], Math.max(nums[0], nums[1])];
for (let i = 2; i < n; i++) {
dp[i % 2] = Math.max(dp[(i - 1) % 2], nums[i] + dp[(i - 2) % 2]);
}
return dp[(n - 1) % 2];
}
// 测试数组
console.log(rob([2, 7, 9, 3, 1])); // 输出应为 12 网友回复


