首页 > 其他分享 >213. 打家劫舍 ll

213. 打家劫舍 ll

时间:2024-04-16 10:00:39浏览次数:27  
标签:f0 f1 213 nums int ll start rm 打家劫舍

题目链接:

状态划分:考虑是否偷 \(\rm nums[0]\)

  • 若偷 \(\rm nums[0]\),则 \(\rm nums[1]\) 和 \(\rm nums[n-1]\) 不能偷,问题变为从 \(\rm nums[2]\) 到 \(\rm nums[n-2]\) 的非环形版本,可直接调用 198 题的代码

  • 若不偷 \(\rm nums[0]\),问题变为从 \(\rm nums[1]\) 到 \(\rm nums[n-1]\) 的非环形版本,同样调用198 题的代码解决

注:这种截出一段的非环形版本,用空间优化后的代码版本更为简洁。

class Solution {
public:
    int rob1(vector<int> &nums, int start, int end) {//[start,end)左闭右开
        int f0 = 0, f1 = 0;//f0表示上上次的结果, f1表示上次的结果
        for (int i = start; i < end; i++) {
            int new_f = max(f1, f0 + nums[i]);
            f0 = f1;
            f1 = new_f;
        }
        return f1;//f1是最后一次算出来的new_f
    }
    int rob(vector<int>& nums) {
        int n = nums.size();
        return max(nums[0] + rob1(nums, 2, n - 1), rob1(nums, 1, n));
    }
};

标签:f0,f1,213,nums,int,ll,start,rm,打家劫舍
From: https://www.cnblogs.com/pangyou3s/p/18137499

相关文章

  • antd 的ProTable 的列加上ellipsis属性后,react-resizable会无法拖动列
    1、我尝试在列中加入ellipsis为true后,让内容超出后,用省略号表示。{title:displayName,dataIndex:propName,key:newPropName,width:widthIndex//,ellipsis:true}但是这引发了另外的问题。react-resizable配置的列可拖动无效了。额外的情况:obj.fixed='......
  • GpuMall镜像社区上线啦!超值福利抢鲜体验!
    想快速体验最新最优镜像?想随手分享你的原创镜像?想寻找一个交流镜像的优质平台?我们听到了广大友友们迫切的心声!立即免费体验:https://gpumall.com/login?type=register&source=cnblogs现在!我们的镜像社区上线啦!!!这里是公开分享镜像的最佳平台!在这里你可以和伙伴交流镜像,畅所欲言!还......
  • TravellingPurchasingMan
    Topcoder#Floyd#状压dpFloyd跑全源最短路,然后\(dp_{msk,x}\)表示在\(msk\)购物过,并且最后一次在\(x\)的最小完成时间,枚举一个转移即可,时间复杂度是\(\mathcal{O}(n^3+2^kk\))的//Author:xiaruizeconstintN=55+10;intn,m,t;structnode{ints,t......
  • shell入门基础
    一、shell变量定义及注意点1、shell只读变量定义:readonly例:a=xxx只读不可更改,不能unset(撤销变量)。注意点:1.变量不能以数字开头2.bash中默认是字符串类型。2、局部变量提升全局变量命令:export变量例:a=hello==>提升全局变量:exporta(后直接跟白变量名)二、she......
  • Pytorch DistributedDataParallel(DDP)教程二:快速入门实践篇
    一、简要回顾DDP在上一篇文章中,简单介绍了Pytorch分布式训练的一些基础原理和基本概念。简要回顾如下:1,DDP采用Ring-All-Reduce架构,其核心思想为:所有的GPU设备安排在一个逻辑环中,每个GPU应该有一个左邻和一个右邻,设备从它的左邻居接收数据,并将数据汇总后发送给右邻。通过N轮迭代......
  • IntelliJ IDEA2021.3.1 使用 MybatisCodeHelperPro插件
    摘自:https://blog.csdn.net/weixin_44321065/article/details/132576008一、下载下载破解后的MybatisCodeHelperPro的V3.2.2版本V3.2.2-CSDN或者V3.2.2-Gitee二、应用将下载下来的Zip文件放到电脑上的某个位置(最好放在Idea管理插件的plugins下)然后自行搜索Idea......
  • LLM学习(1)——大模型简介
    1.1.1LLM的概念为了区分不同参数尺度的语言模型,研究界为大规模的PLM(例如,包含数百亿或数千亿个参数)创造了术语“大型语言模型”LLM。1.1.2LLM的能力与缩放定律LLM的能力涌现能力LLMs被正式定义为“在小型模型中不存在但在大型模型中出现的能力”,这是LLMs区别于以往PLM的最突......
  • 记录解决VS 2022调试C++ DLL项目时卡顿的问题
    项目结构运行时为DotNet6的C#通过Cli/C++去调用C++的DLL。问题表现在VisualStudio2022中调试C++DLL代码时,按下F5、F10、F11跳转到下一行时VS卡顿会2秒左右,体验非常不好。问题原因然后发现原因是项目的配置属性中,调试那一行,调试器类型选择的是“自动”。解决此问题的方法......
  • Python中调用C#的dll库
    Python中调用C#的dll库1、创建C#的dll库。dll名称为MyCsharpDLL.dll,下面是dll里面的代码usingSystem;namespaceMyCsharpDLL{publicclassTest{publicvoidPrint(){Console.WriteLine("Helloworld!!!");}......
  • 07 Shell工具【重点】
    cut命令cut命令从文件的每一行剪切字节,字符和字段并将这些字节,字符,字段输出cut[选项参数]filename  说明:默认分隔符是制表符-f列号,提取第几列-d分隔符,按照指定分隔符分割列touchcut.txt(1)切割cut.txt第一列cut-d""-f1cut.txt(2)切割cut.txt第二列,第三......