当前位置:网站首页>LeetCode 198:打家劫舍
LeetCode 198:打家劫舍
2022-08-10 17:30:00 【斯沃福德】
链接
题目:
思路:动态规划
dp定义:以start为起点,可以偷的最多的钱是多少, 所求即 dp(nums,0) ;
状态和选择:
状态:就是起点start,即小偷所处的位置即nums数组的索引;
选择:当前要么抢,要么不抢,如果不抢则start想前走+1,如果抢,则要加上当前nums中start位置的钱,然后start+2 !base case:
如果 start > nums.lenth-1 ,则为0 ,即起点超过最后一家就抢不到了;重叠子问题
class Solution {
int memo[];
public int rob(int[] nums) {
memo=new int[nums.length];
Arrays.fill(memo,-1); // 初始化dp
return dp(nums,0);
// memo定义:从 i出发能抢到最多的钱总数
}
int dp(int[] nums,int start){
// start就对应题目数组的索引;
// base case ,即start超过最后一间房子后,抢到的为0
if(start>=nums.length){
return 0;
}
// 重叠子问题
if(memo[start]!=-1){
return memo[start];
}
// 状态转移(选择):不抢 or 抢
memo[start]=Math.max( dp(nums,start+1) , dp(nums,start+2)+nums[start] );
return memo[start];
}
}
边栏推荐
猜你喜欢
随机推荐
DGIOT平台实时展示OPC上报数据全流程代码剖析
Making Pre-trained Language Models Better Few-Shot Learners
RMAN-08120的处理
R语言使用oneway.test函数执行单因素方差分析(One-Way ANOVA)、使用数据集的子集数据进行单因素方差分析(subset函数筛选数据子集)
分类常用的神经网络模型,深度神经网络主要模型
Selenium - 如何使用隐式、显示、强制元素等待?
AVFrame related api memory management
初始网络原理
「软件架构」10种常见的软件架构模式
【云原生| Docker】 部署 Django & mysql 项目
本周四晚19:00知识赋能第六期第5课丨OpenHarmony WiFi子系统
R语言拟合ARIMA模型:使用forecast包中的auto.arima函数自动搜索最佳参数组合、模型阶数(p,d,q)、如果已知阶数则直接使用arima函数构建模型(order参数指定阶数)
node环境变量配置,npm环境变量配置
excel-方方格子插件-正则表达式,快速清洗数据的方法
R语言ggplot2可视化:使用ggpubr包的text_grob函数和as_ggplot函数可视化文本段落(将指定文本段落可视化出来、指定文本段可视化为图像)、face参数指定文本的字体样式
不能直接在交易所期货开户
百日刷题挑战--错题01day
期货开户前要第一时间确认手续费
fastjson链分析(1.2.22-47)
Selenium - 如何操作鼠标进行悬停、右击、双击、拖拽?