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

备战秋招60天算法挑战,Day26

题目链接: https://leetcode.cn/problems/jump-game/

视频题解: https://www.bilibili.com/video/BV1gwYKekEVN/

LeetCode 55. 跳跃游戏

题目描述

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。

举个例子:

输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。

视频题解

跳跃游戏

思路来源

思路来源

知识回顾

贪心算法是一种常见的算法思想,它通常用于解决优化问题。贪心算法的基本思想是,在每一步选择中都采取当前状态下最优的选择,从而希望最终得到全局最优解。

思路解析

本题是一道贪心算法应用的经典问题。应用贪心算法的关键就是每一步都采取当前状态下的最优选择

本题的算法如下:

  1. 逆序遍历numstarget=nums.size()
  2. 遍历到索引i,跳nums[i]步,i + nums[i] >= target说明子目标可达,此时更新target = i
  3. 最终target == 0说明总目标可达。

上述步骤把总目标拆解成一个个子目标,为达成每个子目标都采取当下能跳的最大长度,这就很符合贪心的每一步都采取当前状态下的最优选择这个原则。

C++代码

class Solution {
public:bool canJump(vector<int>& nums) {int nums_len = nums.size();//初始化目标值int target = nums_len - 1;for (int i = nums_len - 1; i >=0; --i) {//当前目标可达,更新目标if (i + nums[i] >= target) {target = i;}}if (target == 0) {return true;}return false;}
};

java代码

class Solution {public boolean canJump(int[] nums) {int nums_len = nums.length;// 初始化目标值int target = nums_len - 1;for (int i = nums_len - 1; i >= 0; --i) {// 当前目标可达,更新目标if (i + nums[i] >= target) {target = i;}}if (target == 0) {return true;}return false;}
}

python代码

class Solution:def canJump(self, nums: List[int]) -> bool:nums_len = len(nums)# 初始化目标值target = nums_len - 1for i in range(nums_len - 1, -1, -1):# 当前目标可达,更新目标if i + nums[i] >= target:target = iif target == 0:return Truereturn False

复杂度分析

时间复杂度: O(n)nnums的长度。

空间复杂度: O(1)


http://www.mrgr.cn/news/12579.html

相关文章:

  • 类和对象(4)
  • 【uniapp/uview1.x】u-collapse 高度随内容自适应
  • 【开发心得】筑梦上海:项目风云录(1)
  • ARM程序的组成和执行过程
  • Kafka简单搭建及常用命令
  • 【数据结构与算法】深入理解归并排序(Merge Sort)
  • 一个简单的springboot项目(有源码)
  • Threadlocal+拦截器+JWT实现登录
  • 【Docker项目实战】使用Docker部署webtop桌面版Linux环境
  • 华为手机数据丢失如何恢复?
  • golang本地缓存fastcache高性能实现原理
  • sqlite3 在Python中使用
  • 筑牢技术防线:服务器故障后的应急响应与未来防范策略
  • 2024年8月22日嵌入式学习
  • Linux——文件系统层次结构,绝对路径
  • 视频提取字幕的软件有哪些?5款高识别率工具任你选
  • SpringBoot文档之构建包的阅读笔记
  • spring security怎么解决用户的权限问题
  • SAP 有趣的‘bug‘ 选择屏幕输入框没了
  • 小白之 FastGPT Windows 本地化部署