LeetCode题解 17(55,198) 跳跃游戏,打家劫舍<动态规划>

news2024/11/29 11:39:50

文章目录

    • 跳跃游戏(55)
      • 代码解答:
    • 打家劫舍(198)
      • 代码解答:

跳跃游戏(55)

在这里插入图片描述
这道题是让我们从数组的头部看能不能跳到数组的尾部,每次可跳的最大距离也就是目前所在的索引处的值。
思路:

这里我们可以定义1个能跳的最大距离,我们最后只需要拿这个数去和数组的长度去比较,若比数组的最大的长度大的话,就可以跳到最后1个下标,反之则不能。

        //定义能跳的最大距离
        int max_i = 0;

我们需要遍历1边整个数组,拿到每个索引处所对应的值的大小,

特殊情况:在我们的示例二中,最后1个元素的索引为4,但当前能到的最远距离却为3,比最后1个元素的索引值还小,就表示无论怎么跳都跳不到最后1个元素。

 if(max_i < i){
      return false;
  }

其它情况我们只需要算出在当前索引处能到的最大距离,尽量往最远处跳。
如果能够跳的最远距离(max_i) 小于 当前能够跳的最远距离(max_curr),我们就把max_i进行更新,替换成max_curr。

//定义当前能够跳的最大距离
     int max_curr = nums[i] + i;
      if(max_curr > max_i){
          max_i = max_curr; 
       }

最后判断即可

return max_i >= nums.length-1;

代码解答:

class Solution {
    public boolean canJump(int[] nums) {
        //定义能跳的最大距离
        int max_i = 0;
        for(int i = 0;i<nums.length;i++){
            if(max_i < i){
                return false;
            }
            //定义当前能够跳的最大距离
            int max_curr = nums[i] + i;
            if(max_curr > max_i){
               max_i = max_curr; 
            }
        }
        return max_i >= nums.length-1;
    }
}

打家劫舍(198)

在这里插入图片描述
打家劫舍很容易理解就是不能抢2家相互连着的房间,在这种情况下争取抢到的金额最大。这里我们用动态规划来解决
思路:

我们将这个房间抢还是不抢用二维数组[ i ][1],[ i ][0]。1表示抢 0表示不抢

我们创建dp容器

        int n = nums.length;
        int[][] dp = new int[n+1][2];

动态规划的第二步就是给定起始值,因此我们将第一间房间表示出来,
第一间房间我们可以抢或者不抢,
抢:

        dp[0][1] = nums[0];

不抢:

        dp[0][0] = 0;

因此我们就可以用动态方程去完成后面的房间,我们遍历后面的房间同样也是2种情况:

抢(这时前面的房间就不可以抢了因为它们是相邻的):

dp[i][1] = nums[i] + dp[i-1][0];

不抢(这时前面的房间就可以抢或者不抢,我们就需要在这两者种选一个最大值):

dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]);

最后我们只需要返回最后一个房间的前1个房间抢还是不抢的最大值即可

        return Math.max(dp[n-1][1],dp[n-1][0]);

代码解答:

class Solution {
    public int rob(int[] nums) {
        int n = nums.length;
        int[][] dp = new int[n+1][2];
        dp[0][0] = 0;
        dp[0][1] = nums[0];
        for(int i = 1;i<n;i++){
            //如果不偷
            dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]);
            dp[i][1] = nums[i] + dp[i-1][0];
        }
        return Math.max(dp[n-1][1],dp[n-1][0]);
    }
}

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

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

相关文章

P3375 【模板】KMP字符串匹配——KMP

【模板】KMP字符串匹配 题目描述 给出两个字符串 s1s_1s1​ 和 s2s_2s2​&#xff0c;若 s1s_1s1​ 的区间 [l,r][l, r][l,r] 子串与 s2s_2s2​ 完全相同&#xff0c;则称 s2s_2s2​ 在 s1s_1s1​ 中出现了&#xff0c;其出现位置为 lll。 现在请你求出 s2s_2s2​ 在 s1s_1s1…

Spring中的@Value注解

文章目录**概述****使用方式**基于配置文件的注入基于非配置文件的注入注入普通字符串注入操作系统属性注入表达式结果注入其他bean属性注入URL资源概述 本文配置文件为yml文件 在使用spring框架的项目中&#xff0c;Value是经常使用的注解之一。其功能是将与配置文件中的键对应…

MANA OASIS加持,毫末算力极致优化,训练成本降低100倍

2023年1月5日&#xff0c;第七届HAOMO AI DAY在北京举办。正值岁末年初&#xff0c;中国自动驾驶届开年盛会精彩来袭。本届AI DAY上&#xff0c;毫末分享了2022年三大战役稳健收官成果&#xff0c;展望2023年全球自动驾驶发展趋势&#xff0c;并发布毫末技术、产品最新成果。 &…

基于java ssm springboot选课推荐交流平台系统设计和实现

基于java ssm springboot选课推荐交流平台系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录基于java ss…

docker 看懂这一篇文章就够了

docker就像是手机的应用商店&#xff0c;有了应用商店&#xff0c;就不用自己一个app一个app(微服务开发所需要的中间件)去百度搜索下载&#xff0c;可以在应用商店里面一键下载&#xff08;使用简单的docker命令即可&#xff09; 总之就是一句话&#xff0c;docker pull 镜像…

ubuntu20.04安装4090驱动

实验室配置了一台新主机&#xff0c;现在安装好了20.04&#xff0c;为了安装4090的驱动查找了很多资料。接下来记录一下安装4090驱动的过程&#xff0c;为方便未来安装其他的显卡驱动。 首先推荐一个视频&#xff0c;在为查找了很多资料后&#xff0c;发现这个视频讲的实在是太…

【SQL】无列名查询表中数据

目录 【SQL】无列名查询表中数据 拓展 如果mysql中 information_schema 使用不了&#xff0c;怎么查询所有的数据库名&#xff0c;表名&#xff1f; 【SQL】无列名查询表中数据 有些时候&#xff0c;我们可能获取不了mysql数据库&#xff0c;表中的字段名称&#xff0c;那么…

基于Java+SpringBoot+vue+element实现扶贫助农政策平台系统

基于JavaSpringBootvueelement实现扶贫助农政策平台系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写> 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术…

0基础快速入门Python数据挖掘

推荐教程&#xff1a;4天快速入门Python数据挖掘 课程简介 该阶段主要是介绍一些数据科学领域用Python语言实现的基础库&#xff0c;如简洁、轻便的数据可视化展示工具Matplotlib&#xff0c;高效的运算工具Numpy&#xff0c;方便的数据处理工具Pandas&#xff0c;为人工智能阶…

疑难杂症之anaconda虚拟环境安装还有anaconda无数次的卸载重装

教训&#xff1a;使用虚拟环境无数次重装& 卸载彻底删除命令&#xff1a;打开cmd --> 输入一下命令conda install anaconda -cleananaconda -clean --yes生成的备份文件夹可以删除**手动删除anaconda环境路径下的envs 和pkgs文件**然后从卸载界面点击正常卸载anaconda即…

Anaconda下载库(安装包)、创建虚拟环境等

conda install pak # 安装包&#xff0c;pak代表包名&#xff0c;可依次安装多个包或指定版本&#xff0c;包名之间空格分开&#xff1b; conda remove pak # 移除指定包 conda update pak # 更新包 conda upgrade --all # 更新所以包 conda search pak # …

【数组】leetcode59.螺旋矩阵II(C/C++/Java/Js)

leetcode59.螺旋矩阵II1 题目2 思路3 代码3.1 C版本3.2 C版本3.3 Java版本3.4 JavaScript版本4 总结&#xff1a;1 题目 题源链接 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1…

shell脚本之sed练习题

把/etc/passwd 复制到/root/test.txt&#xff0c;用sed打印所有行 #使用cp命令将/etc/passwd的内容复制到/root/test.txt中 [rootWilliam ~]# cp /etc/passwd /root/test.txt#采用sed命令将其打印出来 [rootWilliam ~]# sed -n p test.txt打印test.txt的3到10行 [rootWilliam…

都2023年了,还不知道怎么学习网络安全?来看看吧,很难找全的

前言 最近收到不少关注朋友的私信和留言&#xff0c;大多数都是零基础小友入门网络安全&#xff0c;需要相关资源学习。其实看过的铁粉都知道&#xff0c;之前的文里是有过推荐过的。新来的小友可能不太清楚&#xff0c;这里就系统地叙述一遍。 01.简单了解一下网络安全 说白…

逆向-还原代码之little-or-big (Interl 64)

// 源代码 #include <stdio.h> /* * 2016/9/29 yu liang. */ int test_one(void) { int i1; char *p(char *)&i; if(*p1) printf("Little_endian\n"); // Little_endian else printf("B…

cmake报错:Unsupported protocol

现象 最近在用cmake编译Apache arrow时&#xff0c;竟然报了错&#xff1a; 排查过程 最开始在网上直接搜“Unsupported protocol”&#xff0c;查到的说是因为安装的curl不支持https&#xff0c;需要先使用如下命令查询curl支持的协议&#xff1a; curl -V然而查出来却是…

微服务面试必问的Dubbo,这么详细还怕自己找不到工作?

前言 互联网的不断发展&#xff0c;网站应用的规模不断扩大&#xff0c;常规的垂直应用架构已无法应对。 服务化的进一步发展&#xff0c;服务越来越多&#xff0c;服务之间的调用和依赖关系也越来越复杂&#xff0c;诞生了面向服务的架构体系(SOA)&#xff0c; 也因此衍生出…

财富自由、技术瓶颈、面试技巧,找另一半...这些程序员最关心的问题,AI的回答神了!

距离ChatGPT发布已经好几周了&#xff0c;我还沉迷在和它的聊天当中&#xff0c;每天一遇到问题&#xff0c;我的第一反应就是先问问ChatGPT的建议&#xff0c;作为一名程序员&#xff0c;我们可能有很多问题或困惑&#xff0c;我也问问了它&#xff0c;整理了一些比较有代表性…

Nodejs三层架构的封装

nodejs三层架构开发模式 项目结构 依次在每个目录添加代码 1.在dao层下创建database.js模块,里面存放的是连接数据库的模块代码 const {connect,connection} require(mongoose); // 设置要连接的 MongoDB 服务器地址(studentsManage:要连接的数据库名称) const dbURI mong…

Unity InputSystem基础

一些概念 Action Maps 一组Action的集合为一个Action Map。可以同时有多个Action Map&#xff0c;可以进行切换&#xff0c;也可以同时运行&#xff08;监控&#xff09;。例如可以使用joystick控制角色移动&#xff0c;也可以使用joystick控制菜单。通过切换Action Map&#x…