LeetCode 198. 打家劫舍(DP)

1. 题目

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。

示例 1:
输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:
输入: [2,7,9,3,1]
输出: 12
解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃到的最高金额 = 2 + 9 + 1 = 12

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/house-robber
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 动态规划解题

相关题目:
LeetCode 213. 打家劫舍 II(DP)
LeetCode 337. 打家劫舍 III(记忆化+递归)

  • dp[i]dp[i]dp[i]表示经过i房间时,可以获得的最大金额
  • 显然有 dp[0]=nums[0];dp[1]=max(nums[0],nums[1])dp[0] = nums[0]; \quad dp[1] = max(nums[0],nums[1])dp[0]=nums[0];dp[1]=max(nums[0],nums[1])
  • 对第 iii 个房间有两种选择:
  1. 偷,dp[i]=dp[i−2]+nums[i]dp[i] = dp[i-2]+nums[i]dp[i]=dp[i2]+nums[i]
  2. 不偷,dp[i]=dp[i−1]dp[i] = dp[i-1]dp[i]=dp[i1]

取2种情况的大者作为:经过i房间获得的最大金额
状态转移公式:dp[i]=max(dp[i−2]+nums[i],dp[i−1])dp[i] = max(dp[i-2]+nums[i], \quad dp[i-1])dp[i]=max(dp[i2]+nums[i],dp[i1])

class Solution {
public:int rob(vector<int>& nums) {int n = nums.size(), i;if(n == 0)return 0;else if(n == 1)return nums[0];else if(n == 2)return max(nums[0],nums[1]);int dp[n] = {0};dp[0] = nums[0];dp[1] = max(nums[0],nums[1]);for(i = 2; i < n; ++i){dp[i] = max(dp[i-2]+nums[i], dp[i-1]);}return dp[n-1];}
};
  • 观察到上面转态转移公式只跟前两个转态有关,可以进行压缩,节省空间
class Solution {
public:int rob(vector<int>& nums) {int n = nums.size(), i;if(n == 0)return 0;else if(n == 1)return nums[0];else if(n == 2)return max(nums[0],nums[1]);int dp_i, dp_i_2 = nums[0], dp_i_1 = max(nums[0],nums[1]);for(i = 2; i < n; ++i){dp_i = max(dp_i_2+nums[i], dp_i_1);dp_i_2 = dp_i_1;dp_i_1 = dp_i;}return dp_i;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python快速找到列表中所有重复的元素

Python快速找到列表中所有重复的元素&#xff1a;https://blog.csdn.net/sinat_29957455/article/details/103886088 index方法 为了能够找到元素在列表中的位置&#xff0c;我们通常会使用list.index()方法来元素的下标&#xff0c;但是这种方法有一个弊端&#xff0c;就是当列…

论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模

笔记整理 | 韩振峰&#xff0c;天津大学硕士链接&#xff1a;https://arxiv.org/pdf/1911.02707.pdf动机人类对话自然地围绕相关概念发展&#xff0c;并分散到多跳概念。本文提出了一种新的会话生成模型——概念流(ConceptFlow)&#xff0c;它利用常识知识图对会话流进行显式建…

百度NLP、视频搜索团队招聘算法实习生!

致力于连接最靠谱的算法岗与最强的求职者招聘贴投放请联系微信xixiaoyao-1问答工作职责研发文本问答、多模态问答、阅读理解、端到端问答等技术&#xff0c;利用NLP理论和方法解决实际问题结合数据、算力优势&#xff0c;在百度的搜索、凤巢等产品和业务实现技术落地研究问答、…

人工智能在线特征系统中的数据存取技术

主流互联网产品中&#xff0c;不论是经典的计算广告、搜索、推荐&#xff0c;还是垂直领域的路径规划、司机派单、物料智能设计&#xff0c;建立在人工智能技术之上的策略系统已经深入到了产品功能的方方面面。相应的&#xff0c;每一个策略系统都离不开大量的在线特征&#xf…

将二维列表输出到excel

list1 [[张三,男,未婚,20],[李四,男,已婚,28],[小红,女,未婚,18],[小芳,女,已婚,25]] output open(data.txt,w,encodinggbk) output.write(name,gender,status,age\n) for row in list1:rowtxt {},{},{},{}.format(row[0],row[1],row[2],row[3])output.write(rowtxt)output.…

论文浅尝 - ACL2020 | IntKB: 一种交互式知识图谱补全框架

笔记整理 | 谭亦鸣&#xff0c;东南大学博士来源: ACL 2020链接&#xff1a;https://www.aclweb.org/anthology/2020.coling-main.490.pdf资源&#xff1a;https://github.com/bernhard2202/intkb.概述知识库作为许多下游NLP任务的资源基础&#xff0c;存在的一个普遍缺陷是它…

预训练模型的前世今生(有福利!)

近年来&#xff0c;在深度学习和大数据的支撑下&#xff0c;自然语言处理技术迅猛发展。而预训练语言模型把自然语言处理带入了一个新的阶段&#xff0c;也得到了工业界的广泛关注。通过大数据预训练加小数据微调&#xff0c;自然语言处理任务的解决&#xff0c;无须再依赖大量…

LeetCode 337. 打家劫舍 III(记忆化+递归)

文章目录1. 题目1.1 相关题目&#xff1a;2. 解题2.1 递归2.2 记忆化递归1. 题目 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个…

孵化业务快速落地与优化

海外酒店是酒旅事业群第一个孵化的业务&#xff0c;从2016年9月份开始到现在已经半年多的时间。在业务后台搭建、成长、优化过程中&#xff0c;经历了很多的思考与选择。 主要分为下面几个阶段&#xff1a; 初建&#xff1a;调研、落地&#xff0c;合理复用&#xff0c;高效自建…

TPLinker 联合抽取 实体链接方式+源码分析

关系抽取–TPLinker&#xff1a; https://blog.csdn.net/weixin_42223207/article/details/116425447 Tagging TPLinker模型需要对关系三元组(subject, relation, object)进行手动Tagging&#xff0c;过程分为三部分&#xff1a; &#xff08;1&#xff09;entity head to enti…

论文浅尝 | KGAT: 用于推荐的知识图注意力网络

笔记整理 | 李爽&#xff0c;天津大学链接&#xff1a;https://arxiv.org/pdf/1905.07854v1.pdf动机为了提供更准确、多样化和可解释的推荐&#xff0c;必须超越对用户-项目交互的建模&#xff0c;并考虑辅助信息。传统的方法&#xff0c;如因子分解机(FM)&#xff0c;将其视为…

对话系统答非所问?快试试这篇ACL'21的连贯性评估大法

文 | 页眉3编 | 小轶背景当我们在绞尽脑汁地想怎么设计一个对话系统的时候&#xff0c;我们当然希望最后训练出来的系统能越像人越好&#xff0c;输出的回复很连贯&#xff0c;很有趣&#xff0c;很体贴。而其中&#xff0c;连贯性可以说是最基本的要求之一了&#xff0c;毕竟不…

LeetCode 384. 打乱数组(rand)

1. 题目 打乱一个没有重复元素的数组。 示例:// 以数字集合 1, 2 和 3 初始化数组。 int[] nums {1,2,3}; Solution solution new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。 solution.shuffle();// 重设数组到它的初始状态[…

复杂语境下的实体关系抽取

复杂语境下的实体关系抽取 https://mp.weixin.qq.com/s/NAyuYMLDyx9Fut2blpvbRA

论文浅尝 - ACL2020 | 知识图谱补全方法的再评估

笔记整理 | 谭亦鸣&#xff0c;东南大学博士来源&#xff1a;ACL 2020链接&#xff1a;https://www.aclweb.org/anthology/2020.acl-main.489.pdf源码&#xff1a;http://github.com/svjan5/kg-reeval概述图谱补全&#xff08;KGC&#xff09;的目标是自动的预测大规模知识图谱…

美团数据库高可用架构的演进与设想

本文介绍最近几年美团MySQL数据库高可用架构的演进过程&#xff0c;以及我们在开源技术基础上做的一些创新。同时&#xff0c;也和业界其它方案进行综合对比&#xff0c;了解业界在高可用方面的进展&#xff0c;和未来我们的一些规划和展望。 在2015年之前&#xff0c;美团&…

恕我直言,很多小样本学习的工作就是不切实际的

文 | ????????????????编 | 小轶以前的小样本学习&#xff08;Few-shot Learning&#xff09;&#xff0c;是需要用一个巨大的训练集训练的。测试时只给出 n-way k-shot&#xff0c;在这 N * k 个样本上学习并预测。我第一次看到这种任务设定的时候真是非常失望…

LeetCode 204. 计数质数(质数的倍数不是质数)

1. 题目 统计所有小于非负整数 n 的质数的数量。 示例:输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。2. 填表解题 2的倍数不是质数3的倍数不是质数5的倍数&#xff0c;7的倍数&#xff0c;11的倍数。。。质数的倍数不是质数 class Solution { p…

论文浅尝 | 六篇2020年知识图谱预训练论文综述

转载公众号 | AI机器学习与知识图谱本文介绍六篇有关知识图谱预训练的优秀论文&#xff0c;大致上可分为两类&#xff0c;生成学习模型和对比学习模型。其中GPT-GNN模型是生成学习模型&#xff0c;模型灵感来源于自然语言处理中的GPT模型&#xff1b;GCC&#xff0c;GraphCL&am…

distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse(‘setupto

distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse(‘setupto: 解决办法 1、安装scm&#xff1a;pip install setuptools-scm 2、 升级pip&#xff1a;pip install --upgrade pip 3、安装setuptools&#xff1a;pip install set…