NC206 跳跃游戏(二)

描述

给定一个非负整数数组nums,假定最开始处于下标为0的位置,数组里面的每个元素代表下一跳能够跳跃的最大长度,如果可以跳到数组最后一个位置,请你求出跳跃路径中所能获得的最多的积分。
1.如果能够跳到数组最后一个位置,才能计算所获得的积分,否则积分值为-1
2.如果无法跳跃(即数组长度为0),也请返回-1
3.数据保证返回的结果不会超过整形范围,即不会超过2^{31}-12
31 −1

分析

要解决两个问题:1.能不能走到最后一个元素;2.积分最大。
使用跳跃游戏一的贪心方法可以判断是否能够走到最后一个元素,但是不清楚要走那条才是积分最大的,不好解决第二个问题。
从后向前的动态规划可以轻易解决问题1,2。
1.能不能走到最后一个元素:
首先看倒数第二个能否走到最后一个元素,然后看倒数第三个元素能否走到倒数第二个,或者直接走到最后一个元素。也就是说一个元素在其能够跳跃到的范围内是否有一个元素调到最后一个元素,如果有,则这个元素是可以调到最后一个元素的,如果不可以,则这个元素不能调到最后一个元素。
2.积分最大:
贪心思想,经可能的多跳,因为是非负的,所以跳的越多,积分越多。一个元素应该选择距离他最近的元素跳,这样跳的次数更多,经过的元素的个数越多,积分越大。

import java.util.*;
public class Solution {public int maxJumpGrade (int[] nums) {int n = nums.length;if(n == 0){return -1;}int[] dp = new int[n];Arrays.fill(dp,-1);dp[n-1] = nums[n-1];for(int i = n - 2; i >= 0; i--){if(nums[i] == 0){continue;}for(int j = i+1; j < n && j <= i+nums[i]; j++){if(dp[j] != -1){dp[i] = dp[j] + nums[i];break;}}}return dp[0];}
}

0动态规划中等 NC206 跳跃游戏(二)相关推荐

  1. 力扣算法题—045跳跃游戏二

    1 #include "000库函数.h" 2 3 4 //考虑当前最远能到什么地方,例如2, 3, 1, 1, 4, 5 //首先只考虑a[0] = 2,即最远可以到a[2],然 ...

  2. _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II 、55.跳跃游戏、45.跳跃游戏II

    _28LeetCode代码随想录算法训练营第二十八天-贪心算法 | 122.买卖股票的最佳时机II .55.跳跃游戏.45.跳跃游戏II 题目列表 122.买卖股票的最佳时机II 55.跳跃游戏 45 ...

  3. LeetCode——1871. 跳跃游戏 VII(Jump Game VII)[中等]——分析及代码(Java)

    LeetCode--1871. 跳跃游戏 VII[Jump Game VII][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 + 队列 (1)思路 (2)代码 (3)结果 ...

  4. 跳跃游戏 (动态规划剪枝/前缀和/滑动窗口/BFS剪枝)

    一.跳跃游戏简单介绍 1. 跳跃游戏简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr,从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步, ...

  5. 跳跃游戏 (贪心/动态规划/dfs)

    1.跳跃游戏简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr[],从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步,或者固定步数,直到到 ...

  6. LeetCode-55、跳跃游戏-中等

    LeetCode-55.跳跃游戏-中等 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 示例 1: 输入: [ ...

  7. Leetcode-D21-动态规划(二刷)-55. 跳跃游戏45. 跳跃游戏 II

    我导好好啊!!!刚找完他!充满动力,给个大标题! 55. 跳跃游戏 1.感觉不像是一道很明显的动态规划问题. 2.看下答案和自己的思路是否一致.和我的想法一下,敲代码叭! 3.通过了,但这次好慢呀 c ...

  8. 高频leetcode动态规划部分:55. 跳跃游戏

    55. 跳跃游戏 难度中等1615 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个下标. 示例 1: ...

  9. 跳跃游戏II-力扣45-java 动态规划

    一.题目描述 给定一个长度为 n 的 0 索引整数数组 nums.初始位置为 nums[0]. 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度.换句话说,如果你在 nums[i] 处,你 ...

最新文章

  1. 区跨链应用 | 区块链创业者不要再骗自己了
  2. 学python要多少钱-Python培训一般要多少钱?
  3. 282021年高考成绩查询方法,往年高考成绩怎么查询 查询成绩的方法
  4. PPT 下载 | 神策数据朱静芸:电商行业精细化运营四大场景
  5. 苏州数字网络计算机比赛,苏州市计算机学会数字化校园专委会2018年年会在我院召开...
  6. ASP.NET - MVC框架及搭建教程
  7. 软件工程学习进度第十周汇总
  8. sql别名无效_SQL别名
  9. 匹配0-59 0-23 的正则表达式
  10. 29. 数组中出现超过一半的数字(C++版本)
  11. C# 实现虚拟打印机 HP Color LaserJet 4500 (3) PRN文件的显示
  12. SpringCloud OpenFeign调用第三方服务
  13. 中通hadoop去CDH的实践之路
  14. 人工智能截稿日期重磅
  15. matlab 光斑质心算法,高精度光斑中心定位算法
  16. 常见错误:无效的文件dsn_DSN1COPY错误-SP映射页面错误
  17. MATLAB中逻辑类型详解
  18. IP地址段计算方法——计算最大广播地址,最小网络地址
  19. 优化win2008桌面,使用AERO主题
  20. 开发者职业生涯调查之未来:30岁以后我们做什么?

热门文章

  1. 安卓pkg解包工具_这个曾改变安卓的男人,要对苹果下手了?
  2. 磁共振脑网络分析入门班(线上:2022.4.6~4.16)
  3. FLASK (CURRENCY)汇率换算api JSON数据读取显示实现
  4. Python解析罗永浩直播带货背后的数据秘密!
  5. 【MySQL】企业共享库:MySQL常见的错误代码
  6. 多个应用程序共享同一个摄像头——opencv 和其他应用共享摄像头
  7. 通达信公式作副图监控
  8. 拆机指点杆小红点的线序及PTPM754DR引脚定义
  9. PL/SQL编程,关联查询/分组查询
  10. cad添加自己线性_如何自定义CAD线型(特殊CAD线型)-百度经验