题目类型:动态规划
思考:看列子找状态转移方程,由于强盗不能连着抢,所以动态转移方程为:
dp[i]=nums[i]+Math.max(dp[i-2],dp[i-3]);
完整代码(由于等于不能显示出来,下面用的= =):
class Solution {
public int rob(int[] nums) {
if(nums.length=0){
return 0;
}
if(nums.length= =1){
return nums[0];
}
if(nums.length= =2){
return Math.max(nums[0],nums[1]);
}
int dp[]=new int[nums.length];
dp[0]=nums[0];
dp[1]=nums[1];
dp[2]=nums[0]+nums[2];
int result=Math.max(dp[2],dp[1]);
for(int i=3;i<nums.length;i++){
dp[i]=nums[i]+Math.max(dp[i-3],dp[i-2]);
result=Math.max(dp[i],result);
}
return result;
}
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for House Robber.Memory Usage: 35.7 MB, less than 92.14% of Java online submissions for House Robber.
07-23
07-23
07-23