笔试面试真题
假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定 金额的钱
public static long houseRobber(int[] A) {
// 如果房间数为0,返回0
if(A.length==0)
return 0;
//定义一个2维数组来存储打劫的钱数,第二个列为0则为不打劫第一列的第i个房间
long[][] bg = new long[A.length][2];
//先设置第一个房间打劫,钱数为A[0]
bg[0][1] = A[0];
//遍历房间
for(int i=1;i<A.length;++i){
bg[i][0] = Math.max(bg[i-1][0],bg[i-1][1]);
bg[i][1] = bg[i-1][0]+A[i];
}
return Math.max(bg[A.length-1][0],bg[A.length-1][1]);
}