[LeetCode OJ]-House Robber

题意:

假如你是一个抢劫犯,在某天夜里抢劫一排挨着的房屋,但是不能抢劫相邻的房屋,请问能得到最多多少现金。每间房屋的存款顺序放在一个一维数组value[]中。

思路

这道题一看就是一道DP问题。分两种情况,当前房屋被抢劫和不被抢劫。

被抢劫时,前一个房屋不被抢劫,rob = norob + value[i];

不被抢劫时,前一个房屋存在可能被抢劫也可能不被抢劫,但是这里应该取其中最大值的norob = max(rob,norob);

按顺序循环遍历每个房屋,直到最后一个房屋,返回当前max(rob,norob)。


public class HouseRobber {

public static int rob(int[] nums) {

int rob = 0;

int norob = 0;

int temrob = 0;

for(int i= 0; i < nums.length; i++){

temrob = norob + nums[i];

norob = Math.max(norob, rob);

rob = temrob;

}

return Math.max(rob, norob);

}

public static void main(String args[]){

int []value = {1,2,3,4,5,6,7,8,9,10};

System.out.println(HouseRobber.rob(value));

}

}

你可能感兴趣的:([LeetCode OJ]-House Robber)