publicclassSolution{publicintrob(int[] nums){if(nums.length ==0)return0;if(nums.length ==1)return nums[0];int pre = nums[0];int cur = Math.max(nums[0], nums[1]);for(int i =2; i < nums.length; i++){int tmp = cur;
cur = Math.max(cur, pre + nums[i]);
pre = tmp;}return cur;}}
也就是找出最大的元素和,条件是这些元素都不相邻。我的思路是,利用动态规划的方法,状态转移方程为:f(x)=max{f(x-2),f(x-3)} + money(x)f(x)的意思是,以x位置为最后一家的能抢的最多的钱。money(x)是序号为x的这一家人的钱数。public class Solution { public int rob(int[] nums) { if (nums.length == 0) return 0; if (nums.length .