Leetcode 198. House Robber


強盜搶劫問題,首先依題目規定,一旦搶了i就不能搶i+1的房子了。
因此我們釐清一下,如何看到題目就知道要用DP去解呢?
DP又分為top-down和bottom-up,
top-down顧名思義就是從大問題到小問題,bottom-up是從小問題到大問題,DP加入memorization的機制。
top-down通常是用遞迴觀念去看。bottom-up通常用陣列(or vector)去記憶初始的問題,再從小問題逐步和成大問題。

因此,題目可以這麼看。設i為index。rob[i]為最佳解。以ex. 2為例:
rob[0] = 只有一間房子,故得最佳解,即2。
rob[1] = 從[2,7]當中挑出的最佳解,即7。
此時,要思考怎麼得出rob[2]呢?

rob[2] 先直接從肉眼看出[2,7,9] = 11,它等同於rob[2] = max(rob[2-1], 當前第i房子+ rob[2-2])

rob[i] = max(rob[i-1], 當前房子 + rob[i-2])


留言

這個網誌中的熱門文章

面試 (網路搜尋的資源)

bitwise operation 面試考題