算法练习13——跳跃游戏II
LeetCode 45 跳跃游戏 II
给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。
每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:
0 <= j <= nums[i]
i + j < n
返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。
动态规划
dp[j]为跳到i位置所需的最少次数
实测能过但是耗时很高,恰好数据集各项数量级每超出限制,但凡0 <= nums[i] <= 1000加一点估计都过不了
提示:
1 <= nums.length <= 104
0 <= nums[i] <= 1000
题目保证可以到达 nums[n-1]
class Solution:def jump(self, nums: List[int]) -> int:length = len(nums)if length == 1:return 0dp = [sys.maxsize] * lengthdp[0] = 0for i in range(length):for j in range(i + 1, min(i + nums[i] + 1, length)):dp[j] = min(dp[j], dp[i] + 1)return dp[length - 1]
转换问题 + 蛮力法

class Solution:def jump(self, nums: List[int]) -> int:n = len(nums)maxPos, end, step = 0, 0, 0for i in range(n - 1):if maxPos >= i:maxPos = max(maxPos, i + nums[i])if i == end:end = maxPosstep += 1return step# 作者:力扣官方题解
# 链接:https://leetcode.cn/problems/jump-game-ii/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以上是官方贪心解法,感觉并不足够“贪心”,更像是暴力解法,结合上图说一下我的理解:
- 首先一定能到,那么最多就n-1次跳跃,所以遍历每一次跳跃情况
- 第一次跳跃,发现可以跳到1、2,没到n-1,那么必然会【跳到1或2】,跳跃次数+1
- 第二次跳跃,会从1或2跳,可选位置,从1出发有2、3、4,从2出发有3,综合来看就是2、3、4,但是显然第一次就可以跳到2,第二次的2就可以忽略,实际上本次可忽略的位置就是本次可以跳到但是上次本就可以跳到的地方,而可忽略的位置由上次可以跳到的最远距离决定,第二次跳跃可忽略2本身及之前的位置,所以第二次跳跃【结果为3或4】,跳跃次数+1
- 第三次跳跃,会从3或4跳,同理,从3可以跳到4、5,从4可以跳到5、6,综合可以到达4、5、6,忽略4,跳跃结果为【5或6】,显然此时就求出来了
代码写法上,应该有两层循环,第一层循环枚举的最多n-1次的跳跃次数,第二层循环,每一次跳跃中的可选位置,巧的是,把所有可选位置连起来正好是一次数组遍历,所以一层循环就可以搞定
如果将end理解为本次跳跃中可忽略数值的上限,maxPos理解为下次跳跃中可忽略数值的上限(需要由本次跳跃备选项进行遍历计算得出),一切则和官方算法一致,或许if maxPos >= i还可省略
class Solution:def jump(self, nums: List[int]) -> int:n = len(nums)maxPos, end, step = 0, 0, 0for i in range(n - 1):maxPos = max(maxPos, i + nums[i])if i == end:end = maxPosstep += 1return step
相关文章:
算法练习13——跳跃游戏II
LeetCode 45 跳跃游戏 II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回…...
算法|每日一题|只出现一次的数字|位运算
136.只出现一次的数字 力扣每日一题:136.只出现一次的数字 之前整理过本题及其扩展,详细说明了思路和做法,链接如下: 只出现一次的数字I,II,III 给你一个 非空 整数数组 nums ,除了某个元素只出…...
Smartforms 打印出现的问题
上半年ECC做了升级 程序代码从ECC迁移到S4 有用户反馈 打印不能用了 经过调试发现在打印程序中 竟然返回2,但是 smartforms ZRPT_CO_YFLL_DY又是存在的 。 然后去激活 并与 ECC对比发现问题 S4的页大小竟然这么小 找到对应的页格式 对比ECC和S4 果然是这个…...
【考研408真题】2022年408数据结构41题---判断当前顺序存储结构树是否是二叉搜索树
文章目录 思路408考研各数据结构C/C代码(Continually updating) 思路 很明显,这是一个顺序存储结构的树的构成方法。其中树的根节点位置从索引0开始,对于该结构,存在有:如果当前根节点的下标为n,…...
深度学习DAY3:激活函数
激活函数映射——引入非线性性质 h (Σ(W * X)b) yσ(h) 将h的值通过激活函数σ映射到一个特定的输出范围内的一个值,通常是[0, 1]或[-1, 1] 1 Sigmoid激活函数 逻辑回归LR模型的激活函数 Sigmoid函数࿰…...
puppeteer
目录 介绍启动方法功能一、爬虫优势如何实现爬虫小demo 功能二、执行脚本百度搜索脚本demo 功能三、获取cookie(这个只能是模拟浏览器当前进入网页的cookie不是平时用的下载的的浏览器的cookie)功能四、监控网页,进行性能分析 介绍 puppetee…...
javascript二维数组(21)执行异步HTTP(Ajax)请求的方法($.get、$.post、$getJSON、$ajax)
执行异步HTTP(Ajax)请求的方法 . g e t 、 .get、 .get、.post、 g e t J S O N 、 getJSON、 getJSON、ajax都是jQuery提供的用于执行异步HTTP(Ajax)请求的方法。每个方法都有其特定的用途和区别。 . g e t :这个方法…...
TypeScript React(下)
目录 TypeScript & React TS开发环境的搭建 tsconfig.json webpack.config.js babel.config.js .eslintrc.js TypeScript & React TS开发环境的搭建 软件版本:TypeScript:3.9.5;React:16.13.1 Node:8.17.0环境搭建:正确搭建一…...
『Linux小程序』进度条
文章目录 缓冲区问题回车与换行的区别进度条小程序 缓冲区问题 假设有一段代码为: #include<iostream> #include<unistd.h> int main() …...
【手写数字识别】GPU训练版本
SVM Adaboost Bagging 完整代码 I import torch import torch.nn.functional as F from torch.utils.data import DataLoader, TensorDataset from torchvision import transforms, datasets import matplotlib.pyplot as plt# 超参数 batch_size 64 num_epochs 10# 数据…...
c#-特殊的集合
位数组 可观察的集合 private ObservableCollection<string> strList new ObservableCollection<string>();// Start is called before the first frame updatevoid Start(){strList.CollectionChanged Change;strList.Add("ssss");strList.Add("…...
Android 使用 eChart 设置标线
echart使用标线 Android部分: import android.webkit.WebView; import com.jianqu.plasmasterilizer.R; import com.jianqu.plasmasterilizer.utils.DisplayUtils; import com.jianqu.plasmasterilizer.utils.TimerUtil; import java.util.ArrayList; import java.…...
红队专题-Cobalt strike 4.x - Beacon重构
红队专题 招募六边形战士队员重构后 Beacon 适配的功能windows平台linux和mac平台C2profile 重构思路跨平台功能免杀代码部分sysinfo包packet包config.go命令的执行shell、run、executepowershell powerpick命令powershell-importexecute-assembly 堆内存加密字符集 招募六边形…...
一文掌握 Go 文件的写入操作
前言 通过案例展示如何读取文件里的内容。本文接着上篇文章的内容,介绍文件的写入操作。 File.Write、File.WriteString、File.WriteAt File.Write(b []byte) (n int, err error) 直接操作磁盘往文件里写入数据,写入单位为字节。 b 参数:…...
小程序入门及案例展示
目录 一、小程序简介 1.1 为什么要使用小程序 1.2 小程序可以干什么 二、前期准备 2.1 申请账号 2.2 开发工具下载与安装 三、电商案例演示 四、入门案例 4.1 项目结构解析 4.2 基础操作及语法 4.3 模拟器 4.4 案例演示 4.4.1 新建页面 4.4.2 头部样式设置 4.4.…...
linux 安装python django pip 遇到的问题
Python解决SSL不可用问题 解决方案: 首先要明白python版本需要和openssl的版本需要相对匹配的,在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,linux…...
【问题解决】【爬虫】抓包工具charles与pycharm发送https请求冲突问题
问题: 开启charles抓包,运行pycharm发送https请求报以下错误 解决: 修改python代码,发送请求时添加verify false,此时charles也能抓取到pycharm发送的请求 2. 关闭charles抓包,取消勾选window proxy...
Hadoop3教程(二):HDFS的定义及概述
文章目录 (40)HDFS产生的背景和定义(41)HDFS的优缺点(42)HDFS组成架构(43)HDFS文件块大小(面试重点)参考文献 (40)HDFS产生的背景和定…...
【物联网+JAVA 】智慧工地源码
一、什么是智慧工地? 工地本身不拥有智慧,工地的运作是依赖于人的智慧。工地信息化技术,能够减少对人的依赖,使工地拥有智慧。 智慧工地,就是立足于“智慧城市”和“互联网”,采用云计算、大数据和物联网…...
001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试
001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试 文章目录 001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试1. 安装1.1 windows下安装openssl1.2 Linux下安装OpenSSL 2. VS中使用openssl3. 测试 1. 安装 1.1 win…...
基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告
基于FireRedASR-AED-L与AIGC技术:自动生成语音错误分析报告 想象一下这个场景:你的团队刚刚完成了一轮大规模的语音识别系统测试,收集了上千小时的音频数据。接下来,你需要从海量的识别结果中,找出哪些词识别错了&…...
惊心动魄!从“卡脖子”到“心脏搭桥”,6台路由器带你亲历IPv6平滑迁移
摘要:从IPv4地址耗尽,到DNS根域服务器“卡脖子”风险,再到中国部署IPv6根服务器,网络协议的演进不仅关乎技术,更关乎国家战略。本文带你穿越互联网发展史,并通过eNSP搭建6台路由器的复杂拓扑,手把手演示如何在不重启设备、不影响业务的前提下,将网络从IPv4平滑迁移至IP…...
Tencent Hunyuan3D-1.0模型蒸馏实践:从std版本压缩出移动端可用的轻量模型
Tencent Hunyuan3D-1.0模型蒸馏实践:从std版本压缩出移动端可用的轻量模型 【免费下载链接】Hunyuan3D-1 腾讯开源的Hunyuan3D-1项目,创新提出两阶段3D生成方法,实现快速、高质量的文本到3D和图像到3D转换,融合Hunyuan-DiT模型&am…...
AI绘图小说配图批量生成 小说插图制作神器 小说配图 动漫图片生成 低配显卡可用 解决图片一致性的问题 生成的图片一致性 可控
简介说明 AI绘图小说配图批量生成 小说插图制作神器 小说配图 动漫图片生成 低配显卡可用 把常见的出图流程整理成更容易操作、更适合生产使用的工作台,且支持低配显卡稳定运行,无需升级硬件即可流畅出图。 它可以帮助用户把“启动服务、填写提示词、切…...
Pixel Aurora Engine应用场景:独立开发者低成本构建像素IP资产库
Pixel Aurora Engine应用场景:独立开发者低成本构建像素IP资产库 1. 像素艺术创作新纪元 在游戏开发领域,像素艺术始终保持着独特的魅力。从早期的《超级马里奥》到现代的《星露谷物语》,像素风格游戏凭借其怀旧感和艺术表现力,…...
电源管理入门-12 clock驱动
电源管理的两个大方面就是电压和时钟。 Clock 时钟就是 SoC 中的脉搏,由它来控制各个部件按各自的节奏跳动。比如,CPU主频设置,串口的波特率设置,I2S的采样率设置,I2C的速率设置等等。这些不同的clock设置,…...
突破平台壁垒:探索5种在Windows运行Android应用的实战方案与终极选择
突破平台壁垒:探索5种在Windows运行Android应用的实战方案与终极选择 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化办公与娱乐深度融合的今天&am…...
程序员体检报告暗语:甲状腺结节=加班等级说明书
一、当体检报告出现“甲状腺结节”翻开软件测试工程师的体检报告,“甲状腺结节”已成为高频词。医学定义中,甲状腺结节是甲状腺细胞异常增生形成的肿块,随吞咽移动,临床检出率超20%(数据来源:2023年《中国甲…...
【数据结构】红黑树(Red-Black Tree)
前言在上一篇博客中,我们学习了 AVL 树,为了保持绝对的平衡,它在插入和删除时会疯狂地进行左旋和右旋。但在现代的Java集合框架中(如 TreeMap、TreeSet,以及 Java 8 之后的 HashMap),并没有选择…...
解锁3大智能功能:League-Toolkit让普通玩家也能玩转专业级游戏分析
解锁3大智能功能:League-Toolkit让普通玩家也能玩转专业级游戏分析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在英雄联盟的召…...
