你是乙個專業的強盜,計畫搶劫沿街的房屋。每間房都藏有一定的現金,阻止你搶劫他們的唯一的制約因素就是相鄰的房屋有保安系統連線,如果兩間相鄰的房屋在同一晚上被闖入,它會自動聯絡**。
給定乙個代表每個房屋的金額的非負整數列表,確定你可以在沒有提醒**的情況下搶劫的最高金額。
簡單的動態規劃問題,題目意思是計算陣列中 不相鄰數字最大之和。
比如[ 1, 3, 4, 5, 3, 2 ]應返回10, 3 + 5 + 2 = 10 。
n個房屋所能搶到的最大的金額 = max (n-1 個房屋所能搶到的最大金額 , n-2 個房屋所能搶到的最大金額+第n個房屋的金額),這樣用乙個陣列來儲存當前房屋能搶到的最大金額數。
拿上面的例子來繼續看具體過程
[ 1, 3, 4, 5, 3, 2 ]
當前位置對應的最大數值為:
1 3 5 8 8 10
計算過程: 陣列第乙個元素 所對應的最大值即自己本身 1; 第二個元素所對應的最大值為 max(1,3) = 3; 第三個元素所對應的最大值為max( 3 , 1+4 )= 5 ; 第四個元素所對應的最大值為 max( 5, 3+5 )= 8 ; 第五個元素所對應的最大值為max( 8 , 3+5)= 8; 第六個元素所對應的最大值為 max( 8,8+2)= 10。 所以 最後結果為 1。
嗯。。注意array[1]的數值 應該是max(nums[0],nums[1]) 而不是 nums[1],自己在寫的時候犯了這個錯,還一直找不出來。。。
class solution
}
LeetCode 198 打家劫舍
題目 你是乙個專業的強盜,計畫搶劫沿街的房屋。每間房都藏有一定的現金,阻止你搶劫他們的唯一的制約因素就是相鄰的房屋有保安系統連線,如果兩間相鄰的房屋在同一晚上被闖入,它會自動聯絡 給定乙個代表每個房屋的金額的非負整數列表,確定你可以在沒有提醒 的情況下搶劫的最高金額。思路 本題的大致意思就是求取乙個...
LeetCode198 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...
Leetcode 198 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...