https://leetcode.com/problems/house-robber/description
198. House Robber
给你一个阵列 nums,nums[i] 表示第 i 家有多少钱,小偷要从这些家偷钱,如果他偷了
第 i 家,他就不能偷相邻的家,求出怎么偷可以偷到最多钱。
思路:
1.拿或不拿的问题基本上就是动态规划,分成拿当前或不拿,取大的,
若 f(i) 表示到第 i 个位置可以偷到的最大金钱,状态转移方程:
f(i) = MAX(f(i - 1), f(i - 2) + nums[i])
2.因为只需要前两个状态所以可以把dp阵列压一压,空间复杂度O(1)。
Java Code: