当前位置:网站首页>算法---跳跃游戏(Kotlin)
算法---跳跃游戏(Kotlin)
2022-08-11 09:58:00 【小米科技Android 研发曹新雨】
题目
给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标。
示例 1:
输入:nums = [2,3,1,1,4]
输出:true
解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
示例 2:
输入:nums = [3,2,1,0,4]
输出:false
解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。
提示:
1 <= nums.length <= 3 * 104
0 <= nums[i] <= 105
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/jump-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解决思路
方法一:定义一个数组,dp[i]表示是否可以跳到i的位置,我们只需要从数组开始,如果当前位置可以跳到,那就把从当前的每一位到可以跳到的区间置为true,如果数组的最后一位是true,那就表示可以达到
方法二:第一个方法的数组可以去掉 从第一个位置开始,直接记录一个最远的位置,在这个最远的位置之内,所有的都可以位置都可以调到。我们在这个基础上进行最远距离的更新
解决方法
方法一:
fun canJump(nums: IntArray): Boolean {
val dp = Array(nums.size) {
false }
dp[0] = true
nums.forEachIndexed {
index, i ->
if (dp[index]) {
Arrays.fill(dp,index,(index + i + 1).coerceAtMost(nums.size),true)
}
}
return dp[nums.size - 1]
}
方法二
优化版本:
fun canJump3(nums: IntArray): Boolean {
var maxRight = nums[0]
nums.forEachIndexed {
index, i ->
if (index <= maxRight){
maxRight = maxRight.coerceAtLeast(index + i)
}
}
return maxRight >= nums.size - 1
}
总结
1.属于贪心算法,每一步都尽量获取到最大值,使用暴力解决的方法,也挺好写,就是当数组太大的时候,效率太低,过不了。
2.算法就是时间和空间的利用啊,第一个方法可能不错,但是浪费了没有必要的空间。
边栏推荐
猜你喜欢

数字钱包红海角逐,小程序生态快速引入可助力占领智慧设备入口

HDRP shader gets pixel depth value and normal information

The mathematical knowledge required for neural networks, the mathematical foundation of neural networks

如何在移动钱包中搭建一个小程序应用商店

HDRP Custom Pass Shader 获取世界坐标和近裁剪平面坐标

网络模型(U-net,U-net++, U-net+++)

Oracle database use problems

分割学习(loss and Evaluation)

深度学习100例 —— 卷积神经网络(CNN)识别眼睛状态

网络模型(DeepLab, DeepLabv3)
随机推荐
关于ts的一些泛型关键字用法
大家有遇到这种错吗?flink-sql 写入 clickhouse
数字钱包红海角逐,小程序生态快速引入可助力占领智慧设备入口
opencv 制作趣图
浮点型在内存中的存储
unity初级面试分享
2022-08-10:为了给刷题的同学一些奖励,力扣团队引入了一个弹簧游戏机, 游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1, 初始有一个小球在编号
WordpressCMS主题开发02-制作顶部header.php和footer.php
分割学习(loss and Evaluation)
打印时间的各种格式
【Prometheus】Alertmanager告警全方位讲解
VideoScribe卡死解决方案
工业检测深度学习方法综述
canvas图形操作(缩放、旋转、位移)
Oacle数据库使用问题
收集awr
Segmentation Learning (loss and Evaluation)
Quickly submit a PR (Web) for OpenHarmony in 5 minutes
Software custom development - the advantages of enterprise custom development of app software
如何在移动钱包中搭建一个小程序应用商店