当前位置:网站首页>头脑风暴:打家劫舍2
头脑风暴:打家劫舍2
2022-08-08 20:22:00 【InfoQ】
题目
输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。
输入:nums = [1,2,3,1]
输出:4
解释:你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。
输入:nums = [1,2,3]
输出:3
解题思路
代码实现
class Solution {
public int rob(int[] nums) {
if(nums.length == 0) return 0;
if(nums.length == 1) return nums[0];
// 包含首元素,不包含尾元素
int value1 = RobRange(nums, 0, nums.length-2);
// 包含尾元素,不包含首元素
int value2 = RobRange(nums, 1, nums.length-1);
return Math.max(value1, value2);
}
public int RobRange(int[] nums, int start, int end){
if(start == end) return nums[start];
int[] dp = new int[nums.length];
dp[start] = nums[start];
dp[start + 1] = Math.max(nums[start], nums[start+1]);
for(int i = start + 2; i <= end; i++){
dp[i] = Math.max(dp[i-2]+nums[i], dp[i - 1]);
}
return dp[end];
}
}
最后
- 时间复杂度:O(n),其中 n 是数组长度。
- 空间复杂度:O(1)。
边栏推荐
猜你喜欢
wps表格怎么复制粘贴后与原来格式一样?
Experience Sharing | A low-cost and fast-paced approach to building an enterprise knowledge management system
OpenEuler's Ways to Improve Resource Utilization 02: Effects under Typical Applications
【翻译】用Argo CD揭开企业规模的持续交付的秘密成分
五大理由告诉你为什么开发人员选择代码质量静态分析工具Klocwork来实现软件安全
瑞吉外卖项目实战Day06--手机端
Word清除格式在哪里?Word清除格式使用方法
fillder4 keeps prompting the system proxy was changed, watch me solve it
LeetCode_2_两数相加
Maykel Studio OpenHarmony Device Development Training Notes - Chapter 6 Study Notes
随机推荐
买股票安全吗 资金能取出来吗
黑猫带你学Makefile第10篇:如何将未被编译的代码/自己写的驱动编译进uboot
莅临GOPS大会龙智展位,获取Forrester最新报告:《Forrester Wave:2021年第四季度企业服务管理报告》
什么是仿射函数?
黑猫带你学Makefile第2篇:程序编译的过程
树查找(暑假每日一题 18)
CVPR 2022 ActivityNet竞赛冠军:中科院深圳先进院提出高低分双模态行为识别框架
经验分享|低成本快节奏搭建企业知识管理系统的方法
制作实例分割数据集
亚洲首个!朱永官院士荣获2022年国际土壤科学联合会李比希奖
树形DP总结
期货开户安全吗?期货怎么开户安全?
Factorial of 1088 N
wps表格怎么复制粘贴后与原来格式一样?
超人飞来!Flutter 实现满屏的力量感动画!
稀疏矩阵转置--C语言
五大理由告诉你为什么开发人员选择代码质量静态分析工具Klocwork来实现软件安全
WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题
WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题
技术分享活动