[Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]

【问题描述】[Leedcode][JAVA][第45题][跳跃游戏 II]

输入: [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

【解答思路】

1. 动态规划 超时

第 1 步:设计状态 int[] temp = new int[len];
第 2 步:状态转移方程

  • 没跳过 temp[j]=temp[i]+1
  • 跳过 temp[j] = Math.min( temp[j],temp[i]+1 );
    第 3 步:考虑初始化
    temp数组置0 第一跳
    第 4 步:考虑输出
    temp[len-1]
    时间复杂度:O(N^2) 空间复杂度:O(N)
 public int jump(int[] nums) {int len =  nums.length;if(len ==  0 ||len ==1){return 0;}int[] temp = new int[len];//辅助数组置0for(int i =0; i<len ;i++){temp[i] = 0;}//初始化第一跳for(int i =1; (i<=nums[0]) && (i<len);i++){temp[i]++;}//动态规划for(int i =1; i<len-1 ;i++){//注意边界for(int j=i+1; (j<=nums[i]+i)&& (j<=len-1);j++){//跳过 比较当前到达j位所在步数 与  起跳格i所在步数+1 之间的大小if(temp[i]+1 < temp[j]){temp[j]=temp[i]+1 ;}//没跳过 则是起跳格i所在步数+1if(temp[j]==0){temp[j]=temp[i]+1;}}}return temp[len-1];}
2. 反向查找位置 贪心
  • 「贪心」地选择距离最后一个位置最远的那个位置,也就是对应下标最小的那个位置。
  • 从左到右遍历数组,选择第一个满足要求的位置。
    时间复杂度:O(N^2) 空间复杂度:O(1)
public int jump(int[] nums) {int position = nums.length - 1;int steps = 0;while (position > 0) {for (int i = 0; i < position; i++) {if (i + nums[i] >= position) {position = i;steps++;break;}}}return steps;}
3. 正向查找可到达的最大位置 降低时间复杂度

在这里插入图片描述

时间复杂度:O(N) 空间复杂度:O(1)

public int jump(int[] nums) {int end = 0;int maxPosition = 0; int steps = 0;for(int i = 0; i < nums.length - 1; i++){//找能跳的最远的maxPosition = Math.max(maxPosition, nums[i] + i); if( i == end){ //遇到边界,就更新边界,并且步数加一end = maxPosition;steps++;}}return steps;
}

【总结】

1.贪心算法,每次找局部最优,最后达到全局最优
2. 不要死板 想好方法 总有办法实现 巧妙更新边界
3. 画图思考 想清楚再动手

参考链接:https://leetcode-cn.com/problems/jump-game-ii/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by-10/

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

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

相关文章

大型动态应用系统平台系统架构?这些大家并不陌生

大型动态应用系统平台系统架构[多图] 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式…

c语言round函数能四舍五入吗,怎么利用round函数实现四舍五入?

Excel强大的制表功能让很多人都对它无比依赖&#xff0c;它也早已成为日常必备的工具。我们在办公室工作时&#xff0c;经常会遇到要用 Excel处理数字的情况&#xff0c;需要对其进行四舍五入。那么实现这一操作&#xff0c;我们需要使用哪些Excel函数呢&#xff1f;今日小编就…

洛谷 - P2181 - 对角线 - 打表 - 组合数学

https://www.luogu.org/problemnew/show/P2181 对于某条对角线&#xff0c;除去从两端出发的对角线&#xff0c;其他的都与它有1个交点。 每个点有(n-3)条对角线&#xff0c;每条对角线和其余C(n-2,2)条对角线都有1个交点&#xff0c;共有n个点&#xff0c;重复计算交点再除以2…

InnoDB 事务/锁/多版本分析?你了解多少?

目录 • InnoDB事务 – 事务结构/功能 – XA事务/Group Commit – mini-transaction• InnoDB锁 – 锁结构/类型/功能 – 锁等待/死锁检测 – 自增序列锁(autoinc lock) – 半一致读(semi-consistent read) – 隐式锁(implicit lock) • InnoDB多版本 – ReadView –…

[剑指offer]面试题第[42]题[Leedcode][JAVA][第53题][最大子序和][动态规划][贪心][分治]

【问题描述】[第53题][最大子序和][中等] 给定一个整数数组 nums &#xff0c;找到一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大…

排队枪毙游戏c语言,基于C语言实现的约瑟夫生者死者游戏

1 项目简介约瑟夫生者死者游戏的大意是&#xff1a;30个旅客同乘一条船&#xff0c;因为严重超载&#xff0c;加上风高浪大危险万分&#xff1b;因此船长告诉乘客&#xff0c;只有将全船一半的旅客投入海中&#xff0c;其余人才能幸免于难。无奈&#xff0c;大家只得统一这种方…

[Leedcode][JAVA][第983题][最低票价][动态规划]

【问题描述】[第983题][最低票价][中等] 在一个火车旅行很受欢迎的国度&#xff0c;你提前一年计划了一些火车旅行。在接下来的一年里&#xff0c;你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式&#xff1a;一张为…

disperse函数 C语言,武汉工业学院电气1006班C语言测试题.doc

1006班C语言测试题姓名&#xff1a; 学号&#xff1a;1.以下程序的输出结果为( )。   main( )    { int i010,j10;    printf("%d,%d\n",i,j--);   } A 11,9 B 9,10 C 8,10 D 9,92&#xff0e;设a为int型变量&#xff0c;执行下列赋值语句后&#xff0c;a的取…

[Leedcode][JAVA][第572题][另一个树的子树]

【问题描述】 给定两个非空二叉树 s 和 t&#xff0c;检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1: 给定的树 s:3/ \4 5/ \1 2 给定的树 t&#xff1a;4 / \1 2 返回…

LVS在淘宝环境中的应用

目录 1. LVS-简介 2. LVS-问题 3. LVS-fullnat 4. LVS-synproxy 5. LVS-cluster 6. LVS-performance 7. LVS-todo list 疑问引入:用户访问淘宝&#xff0c;访问哪台apache服务器 传统做法&#xff1a;DNS服务 四个问题 Q1&#xff1a;apache2 down&#xff0c;remove生…

android 开发艾特功能,Android Binder

Binder 是一种进程间通信机制&#xff0c;基于开源的 OpenBinder 实现&#xff1b;OpenBinder 起初由 Be Inc. 开发&#xff0c;后由 Plam Inc. 接手。从字面上来解释 Binder 有胶水、粘合剂的意思&#xff0c;顾名思义就是粘和不同的进程&#xff0c;使之实现通信。为什么 Act…

C# Json转对象

第一步&#xff0c;项目添加negut的搜索Newtonsoft.Json&#xff0c;安装第一个&#xff1a;如图所示&#xff1a; 安装以后&#xff0c;自动引用。 private ObservableCollection<Traffic> m_listcls; var json JsonConvert.DeserializeObject<List<Traffic>&…

Dubbo开源

什么是Dubbo? 分布式服务框架 – 远程服务调用 • Ne/y/Mina/Grizzly • RMI/Hessian/WebService – 服务动态发现 • Zookeeper/Redis – 集群软负载均衡 • Random/RoundRobin – 集群失败容错 • Failove…

ionic android 本地存储,ionic2/3本地数据存储storage

ionic2开始storage默认使用的是IndexedDB&#xff0c;而不是LocalStorage存储存储是存储键/值对和JSON对象的简单方法。存储使用下面的各种存储引擎&#xff0c;根据平台选择最佳的存储引擎。当在本机应用程序环境中运行时&#xff0c;Storage将优先使用SQLite&#xff0c;因为…

[Leedcode][JAVA][第470题][Ran7()实现Rand10()]

【问题描述】[Leedcode][JAVA][第470题][Ran7()实现Rand10()] 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数&#xff0c;试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。示例 1:输入: 1 输出: [7] 示例 2:输入: 2 输出: …

时区配置

时区配置 在linux中与时间相关的文件有 /etc/localtime/etc/timezone ##RHEL 7中找不到该文件 其中&#xff0c;/etc/localtime是用来描述本机时间&#xff0c;而 /etc/timezone是用来描述本机所属的时区。 修改本机时区 rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asi…

推荐系统?淘宝?

目录 • 推荐系统概念 • 淘宝的数据 • 淘宝推荐系统应用场景 • 淘宝推荐系统核心算法 • 淘宝推荐系统的设计 • 推荐系统概念 • 淘宝的数据 • 淘宝推荐系统应用场景 • 淘宝推荐系统核心算法 • 淘宝推荐系统的设计 推荐系统定义 维基百科&#xff1a; form…

android studio 无法输入中文,Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案...

AndroidStudio终于出3.0正式版了&#xff0c;内置了kotlin(虽然我安了插件一直能用)。一直忍着没敢下rc版的好奇猫&#xff0c;总算装了正式版。当然&#xff0c;伴随每次大版本更新&#xff0c;总有一些恼人的后遗症&#xff0c;其中以gradle问题最多。AS3.0要求gradle版本在3…

[Leedcode][JAVA][第136题][第137题][只出现一次的数字][位运算][HashSet][HashMap]

【问题描述】[第136&#xff0c;137题][只出现一次的数字] 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现了N次。找出那个只出现了一次的元素。[第136题]N 2 输入: [2,2,1] 输出: 1 [第137题]N3 输入: [2,2,3,2] 输出: 3【解答…

[Swift通天遁地]七、数据与安全-(12)使用Instruments Leaks工具检测内存泄露

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;➤GitHub地址&a…