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

【代码随想录】刷题记录(86)-跳跃游戏 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]

 

示例 1:

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

示例 2:

输入: nums = [2,3,0,1,4]
输出: 2

 

提示:

  • 1 <= nums.length <= 104
  • 0 <= nums[i] <= 1000
  • 题目保证可以到达 nums[n-1]

 

我的作答:

覆盖范围到了就行,但是需要注意指针不能只设一个就够了,需要一个覆盖范围的指针,一个存储当前位置的指针,还需要一个遍历元素的指针;

class Solution(object):
    def jump(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums)==1: return 0
        nex, i, cur = 0, 0, 0
        result = 0
        while i<len(nums):
            nex = max(nums[i]+i, nex) #能跳的最远距离
            if i==cur: #表示当前位置需要更新
                if i!=len(nums)-1:
                    result += 1
                    cur = nex #更新到最远距离的位置
                elif i>=len(nums)-1:
                    break
            i += 1
        return result

a29ec237d2be42dc8534066bb386c36f.png

每天写代码写得好烦,原本只需要写leetcode,觉得写代码还挺有意思。自从需要写神经网络之后,手一直敲一直敲,无穷无尽的代码让我心生厌烦。

 

参考:

class Solution:
    def jump(self, nums):
        cur_distance = 0  # 当前覆盖的最远距离下标
        ans = 0  # 记录走的最大步数
        next_distance = 0  # 下一步覆盖的最远距离下标
        
        for i in range(len(nums) - 1):  # 注意这里是小于len(nums) - 1,这是关键所在
            next_distance = max(nums[i] + i, next_distance)  # 更新下一步覆盖的最远距离下标
            if i == cur_distance:  # 遇到当前覆盖的最远距离下标
                cur_distance = next_distance  # 更新当前覆盖的最远距离下标
                ans += 1
        
        return ans

d7392be4f7cf4e00be47cdd5e60699ff.png

 


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

相关文章:

  • 《数据结构》期末考试测试题【上】
  • HuaWei、NVIDIA 数据中心 AI 算力对比
  • 运行StableDiffusionInpaintPipeline的Example时报错:OSError: Cannot load model runwayml/stable-diffusion-...
  • 虚幻引擎反射机制
  • leetcode 热题100(78. 子集)dfs回溯 c++
  • 论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
  • Web API和Web Services的区分
  • IDEA错题集
  • HarmonyOS实战开发之HMRouter实现跳转
  • 【源码+文档+调试讲解】电影交流平台小程序
  • GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——安全功能
  • 【C++】——精细化哈希表架构:理论与实践的综合分析
  • 鸿蒙Next如何实现打开相册选图片功能?
  • 服务器与电脑主机各自的优势
  • 麦吉尔大学Ding Lab基于深度学习开发单细胞水平转座子位点表达定量模型,登Nature子刊
  • matrix-breakout-2-morpheus
  • Unity URP多光源支持,多光源阴影投射,多光源阴影接收(优化版)
  • loki failed to flush
  • 为什么要在PHY芯片和RJ45网口中间加网络变压器
  • img向后端获取图片时怎么解决需携带token的问题
  • 手机动态壁纸设置教程安卓手机和苹果手机都可以
  • 【PS不常见教程】实操篇之通道抠图-抠烟花
  • 微信小程序原生,tdesign时间选择器,t-date-time-picker封装成组件,开始时间结束时间
  • 决策树入门指南:从原理到实践
  • CAN201 Introduction to Networking(计算机网络)Pt.3 网络层
  • mysql5.7.29迁移至DM8操作