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

力扣 跳跃游戏 II

贪心算法,存下每一步的最远,去达到全局的最小跳跃次数。

题目

从题中要达到最少次数,肯定是每一步尽可能走远一点。但注意j被限制了范围,这种不用想每一步遍历时肯定选最大的num[i],但要注意,题中是可以到达不是刚好到达,因此最后一步只要大于最后一个数都是可以的。从第一个数开始遍历,每一步贪心去选最远的距离,然后每个数都存下一个可达到的最远距离便于更新,因为贪心每一次都是基于当前数的最优,并不是全局最优。

时间复杂度: O(n),空间复杂度: O(1)。

class Solution {
    public int jump(int[] nums) {
        int step=0,end=0,furthest=0;
        for(int i=0; i<nums.length-1;i++){  
            furthest = Math.max(furthest, i+nums[i]);  //dp每个i,记录每个位置能达到的最远距离
            if(i==end){  //i遍历到上个起跳点能到的最远距离
                end = furthest;  //更新到下一步要跳到的位置,注意这里跳的最远距离由i前面的数贪心选出来的
                step++;  //跳往下一步,因此最后一个数不用遍历
            }
        }
        return step;
        
    }
}

动态规划是存一个要维护状态的dp数组,每次的状态由上几个状态更新得到,这题用dp会很慢。而贪心策略在于,每一步都存下最优状态便于后续的更新。


http://www.kler.cn/a/552270.html

相关文章:

  • 从WebRTC到EasyRTC:嵌入式适配的视频通话SDK实现低延迟、高稳定性音视频通信
  • springboot024-玩具租赁系统
  • Java-数据结构-(HashMap HashSet)
  • 阶段 1:Kafka基础认知
  • WPF高级 | WPF 自定义控件开发:从需求分析到完整实现
  • MoE硬件部署
  • el-table已经选中的项,通过selectable属性不可以再次选择
  • 视频编解码标准中的 Profile 和 Level
  • QT实战-qt各种菜单样式实现2
  • sql server查询IO消耗大的排查sql诊断语句
  • 【产品资料】陀螺匠·企业助手v1.8 产品介绍
  • 豪越科技:消防安全重点单位一体化安全管控
  • 基于SSM框架的宠物之家系统(有源码+论文!!!)
  • 根据CAN通讯矩阵使用CANoe生成DBC
  • 4.【线性代数】——矩阵的LU分解
  • 3DM转换成GLB
  • CPP集群聊天服务器开发实践(七):Github上传项目
  • 太空飞船任务,生成一个地球发射、火星着陆以及下一次发射窗口返回地球的动画3D代码
  • 【DeepSeek】本地部署,保姆级教程
  • 深度解析 Spring Boot:核心概念与最佳实践