Since we are not allowed to rob two adjacent houses, we keep two variables pre
and cur
. During the i
-th loop, pre
records the maximum profit that we do not rob the i - 1
-th house and thus the current house (the i
-th house) can be robbed while cur
records the profit that we have robbed the i - 1
-th house.
The code is as follows.
1 class Solution { 2 public: 3 int rob(vector<int>& nums) { 4 int n = nums.size(), pre = 0, cur = 0; 5 for (int i = 0; i < n; i++) { 6 int temp = max(pre + nums[i], cur); 7 pre = cur; 8 cur = temp; 9 } 10 return cur; 11 } 12 };