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

【面试经典150题】跳跃游戏

题目链接

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

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

  • 1 <= nums.length <= 1 0 4 10^4 104
  • 0 <= nums[i] <= 1 0 5 10^5 105

分析:

假设当前位于nums[i],表示该元素后面的nums[i]个元素任我跳,那该跳哪个呢?

是不是得考虑跳到哪一个位置下下一步可以跳得更远。这个由index+nums[i]决定。

也就是说后面的nums[i]个元素里,哪个索引+元素值最大就跳到哪里。

/*** @param {number[]} nums* @return {boolean}*/
var canJump = function (nums) {let i = 0;let nextIndex;let maxVal = 0;while (i + nums[i] < nums.length - 1) {if (nums[i] === 0) {return false;}for (let j = i + 1; j <= i + nums[i]; j++) {if (j + nums[j] > maxVal) {nextIndex = j;maxVal = j + nums[j];}}maxVal = 0;i = nextIndex;}return true;
};

时间复杂度: O ( n 2 ) O(n^2) O(n2)

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

时间复杂度太高,换个思路:

维护一个最大可达位置maxReach。

/*** @param {number[]} nums* @return {boolean}*/
var canJump = function (nums) {let maxReach=0;for(let i=0;i<nums.length;i++){if(i>maxReach){return false;}maxReach=Math.max(maxReach,i+nums[i]);if(maxReach>=nums.length-1){return true;}}return true;
};

时间复杂度: O ( n ) O(n) O(n)

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

http://www.lryc.cn/news/151142.html

相关文章:

  • 【Rust】003-基础语法:流程控制
  • 0829【综述】面向时空数据的区块链研究综述
  • MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)
  • YOLOV8模型使用-检测-物体追踪
  • springmvc:设置后端响应给前端的json数据转换成String格式
  • Mac安装brew、mysql、redis
  • MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s)
  • Unity 之 参数类型之值类型参数的用法
  • VScode远程连接主机
  • 【iOS】属性关键字
  • 【计算机基础】Git从安装到使用,详细每一步!扩展Github\Gitlab
  • 深入了解Docker镜像操作
  • 嵌入式开发-单片机学习介绍
  • 5、Spring之Bean生命周期源码解析(销毁)
  • 开发多点触控MFC应用程序
  • 使用nlohmann json库进行序列化与反序列化
  • 高教社杯数模竞赛特辑论文篇-2012年A题:葡萄酒的评价(附获奖论文)
  • 手写RPC——数据序列化工具protobuf
  • 【MATLAB第70期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入单输出回归预测及多分类预测模型(全网首发)
  • Linux进程间通信的几种方式
  • Android 13.0 Launcher3定制之双层改单层(去掉抽屉式一)
  • 【uniapp 配置启动页面隐私弹窗】
  • 2分钟讲清楚C#的委托, C语言的函数指针,Java的函数式接口
  • 华为云物联网平台微信小程序开发教程2.0【完整详细教程】
  • Laravel 模型1对1关联 1对多关联 多对多关联 ⑩①
  • 【分类】分类性能评价
  • M1 Pro 新芯片安装python2 方案汇总
  • 无涯教程-Android - Broadcast Receivers
  • 【Pytorch】Tutorials个人翻译集合
  • WordPress(6)网站侧边栏倒计时进度小工具