簡單 Leetcode 198 打家劫舍

2021-10-05 18:41:34 字數 700 閱讀 4849

題目

你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。

給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。

示例解題思路及**

1.思路

這題確定用動態規劃來解決。建立dp陣列,dp[n]代表偷竊至第n個房子時累積偷竊到的最大金額。在第n個房子的時候,有兩種選擇,一種是搶第n個房子,並加上在第n-2個房子累積的最大偷竊金額(為什麼不是n-3, 或者n-3,因為我要找最大的金額,n-2房子的金額肯定大於等於n-3房子的金額,dp[n-2] 和 dp[n-1] 已經是兩個子問題的最優解了),一種是不搶第n個房子,那累計偷竊金額保持不變,跟在第n-1個房子累計的最大偷竊金額一樣。只要選擇這兩種情況中,累積金額更大的乙個選項,即可得到dp[n]。

2.**

var rob = function(nums) 

var dp = new array(n + 1);

dp[0] = 0;

dp[1] = nums[0]; // 每個狀態只與前兩個狀態有關,所以只初始化兩個變數;

for (var i = 2; i <= n; i++)

return dp[n];

};

LeetCode 198 打家劫舍

題目 你是乙個專業的強盜,計畫搶劫沿街的房屋。每間房都藏有一定的現金,阻止你搶劫他們的唯一的制約因素就是相鄰的房屋有保安系統連線,如果兩間相鄰的房屋在同一晚上被闖入,它會自動聯絡 給定乙個代表每個房屋的金額的非負整數列表,確定你可以在沒有提醒 的情況下搶劫的最高金額。思路 本題的大致意思就是求取乙個...

LeetCode198 打家劫舍

你是乙個專業的強盜,計畫搶劫沿街的房屋。每間房都藏有一定的現金,阻止你搶劫他們的唯一的制約因素就是相鄰的房屋有保安系統連線,如果兩間相鄰的房屋在同一晚上被闖入,它會自動聯絡 給定乙個代表每個房屋的金額的非負整數列表,確定你可以在沒有提醒 的情況下搶劫的最高金額。簡單的動態規劃問題,題目意思是計算陣列...

LeetCode198 打家劫舍

你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...