198. 打家劫舍
Posted lzh1043060917
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了198. 打家劫舍相关的知识,希望对你有一定的参考价值。
直接看代码吧
class Solution { public int rob(int[] nums) { if(nums.length==0) return 0; if(nums.length==1) return nums[0]; if(nums.length==2) { if(nums[0]>nums[1])return nums[0]; else { return nums[1]; } } int[] s=new int[nums.length];//s[i]代表从0到下标i这么多的数,所能偷的最高金额 s[0]=nums[0];//假如只有一个数,显然最大金额为nums[0] s[1]=nums[0]>nums[1]?nums[0]:nums[1];//因为不能偷相邻两个元素,所以假如有俩元素,选其中大的那个 for(int i=2;i<nums.length;i++) { s[i]=Math.max(s[i-1],s[i-2]+nums[i]);//以s[2]为例,显然s[2]指的是下标为0,1,2,这三个数的最大金额,要么选nums[1],要么同时选nums[0],nums[2] } return s[nums.length-1]; } }
以上是关于198. 打家劫舍的主要内容,如果未能解决你的问题,请参考以下文章
代码随想录算法训练营第四十八天 | 198.打家劫舍 213.打家劫舍II337.打家劫舍III