# 0198. House Robber ###### tags: `Leetcode` `Medium` `Dynamic Programming` Link: https://leetcode.com/problems/house-robber/ ## 思路 这是“双状态”DP最典型的一道题。它的特点是:**每一轮的状态只取决于上一轮的状态**;并且每一轮的状态只有两种,通常就是“取”或“不取”。 结合本题来说,是否打劫第k间房子(的收益),完全取决于是否打劫第k-1间房子(的收益) ![](https://i.imgur.com/e5MSWg3.png) 由于只在于前一天的状态 所以不需要用dp数组存 只要记得上一天两个状态的结果即可 ## Code ```java= class Solution { public int rob(int[] nums) { int rob = nums[0], norob = 0; for(int i=1; i<nums.length; i++){ int rob_temp = rob; rob = norob+nums[i]; norob = Math.max(rob_temp, norob); } return Math.max(rob, norob); } } ```