[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));

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,866评论 18 399
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 10,542评论 0 41
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,255评论 0 6
  • 这三年要感谢的人太多,如有遗漏请原谅! 首先要感谢梦瑶,你是部门最瘦的小姑娘,没有之一,但是我总是把你当汉子来看待...
    木易夕口阅读 1,454评论 0 0

友情链接更多精彩内容