int rob(vector<int>& nums) { int n = nums.size(); if (n == 0) return 0; if (n == 1) return nums[0]; if (n == 2) return max(nums[0], nums[1]); return max(linearRob(nums,0, n-1), linearRob(nums,1,n)); }
int rob(vector<int>& nums) { if(nums.size() == 0){ return 0; } if(nums.size() == 1){ return nums[0]; } if(nums.size() == 2){ return max(nums[0], nums[1]); } vector<int> n1; for(int i = 0; i < nums.size() - 1; i++){ n1.push_back(nums[i]); } int c1 = linearRob(n1); vector<int> n2; for(int i = 1; i < nums.size(); i++){ n2.push_back(nums[i]); } int c2 = linearRob(n2); return max(c1, c2); }