当前位置: 首页 > news >正文

1.6 面试经典150题 - 跳跃游戏



跳跃游戏

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

class Solution(object):def canJump(self, nums):""":type nums: List[int]:rtype: bool"""if not nums or len(nums) == 1: return True# 定义左右指针left = 0right = left + 1while right < len(nums):tmp_right = left# 计算本轮最有可以到达的位置for i in range(left, right):pos = i + nums[i]# 可以到达最后一个元素,提前返回if pos >= len(nums) - 1: return Trueif pos > tmp_right: tmp_right = pos# 本轮不能再向右了,返回falseif tmp_right < right: return False# 更新两个指针值left = rightright = tmp_right + 1return True

本题解题思路:

记录两个值:当前位置left,和目前可以到达的最右位置right

每次对区间内的位置进行遍历,找到新的 可以到达的最右位置

如果不能继续向右,则无法到达最后一个节点

如果可以,则更新left 和 right位置,继续遍历

 跳跃游戏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]

class Solution(object):def jump(self, nums):""":type nums: List[int]:rtype: int"""if not nums or len(nums) == 1: return 0count = 0left = 0right = left + 1while right < len(nums):count += 1tmp_right = leftfor i in range(left, right):pos = i + nums[i]if pos >= len(nums) - 1: return countif pos > tmp_right: tmp_right = posif tmp_right < right: return -1left = rightright = tmp_right + 1return count

本题对上题略加修改,每次遍历都将计数加1,在上一题返回return的位置,变为返回计数即可。

相关文章:

  • Java根据模板文件生成excel文件,同时将excel文件转换成图片
  • Django ORM 中的单表查询 API(1)
  • 数学建模实战Matlab绘图
  • HarmonyOS应用开发者高级认证学习认证知识答疑笔记
  • c语言冒泡排序
  • Unity学习之坦克游戏制作(1)开始场景的制作
  • QT上位机开发(MySql访问)
  • STM32-04-STM32时钟树
  • vue 里 props 类型为 Object 时设置 default: () => {} 返回的是 undefined 而不是 {}?
  • 一些UE5 ControlRig小技巧
  • 关于VScode的这个ssh的配置的经验
  • 幻兽帕鲁开服教程——游戏
  • 使用 crypto-js 进行 AES 加解密操作
  • git add -u 什么意思
  • 009 Linux_文件系统 | 软硬链接
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CSS相对定位
  • Electron入门介绍
  • IOS评论框不贴底(ios12新bug)
  • nfs客户端进程变D,延伸linux的lock
  • orm2 中文文档 3.1 模型属性
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • React+TypeScript入门
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Vue2.x学习三:事件处理生命周期钩子
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 闭包--闭包之tab栏切换(四)
  • 聊聊directory traversal attack
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 世界上最简单的无等待算法(getAndIncrement)
  • 微信小程序--------语音识别(前端自己也能玩)
  • 无服务器化是企业 IT 架构的未来吗?
  • 一文看透浏览器架构
  • 原生js练习题---第五课
  • 翻译 | The Principles of OOD 面向对象设计原则
  • #pragma once
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (03)光刻——半导体电路的绘制
  • (3)STL算法之搜索
  • (笔试题)合法字符串
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (汇总)os模块以及shutil模块对文件的操作
  • (九十四)函数和二维数组
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)原始图像数据和PDF中的图像数据
  • ***监测系统的构建(chkrootkit )
  • .NET : 在VS2008中计算代码度量值
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core 中插件式开发实现