夯实算法-跳跃游戏
创始人
2024-03-21 14:23:40
0

题目:LeetCode

 

给定一个非负整数数组 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

解题思路

记数组长度是nnn,从前往后跳,每一步,下标iii可以跳的最大长度是其元素[i][i][i],意思就是每一步都有若干选择,可以跳 000,也可以跳[i][i][i],问能否到达最后一个下标 n−1n-1n−1,很明显可以用动态规划解决。

状态转移方程是结果导向,换句话说就是要尽可能的以直接得到最终结果来定义状态。

记f(i)f(i)f(i)为能否跳跃到下标为 iii 的状态,那么 f(n−1)f(n-1)f(n−1) 就是整个问题的解。

如果从i−1i−1i−1位置跳,那么只要[i−1][i−1][i−1]大于等于111,并且f(i−1)f(i−1)f(i−1)也是TTT,就能达到位置iii;同理,如果从i−2i−2i−2位置跳,只要[i−2][i−2][i−2]大于等于222,并且f(i−2)f(i−2)f(i−2)是TTT即可,

可得到状态转移方程: f(i)=f(j)∧nums[j]≥i−j,j∈[0,i−1]f(i)=f(j)∧nums[j]≥i−j,j∈[0,i−1]f(i)=f(j)∧nums[j]≥i−j,j∈[0,i−1]

且明显f(0)=Tf(0)=Tf(0)=T。

代码实现

public boolean canJump(int[] nums) {final int n = nums.length;boolean[] dp = new boolean[n];dp[0] = true;for (int i = 1; i < n; i++) {for (int j = 0; j < i; j++) {if (dp[j] && nums[j] >= i - j) {dp[i] = true;}}}return dp[n - 1];
}
复制代码

复杂度分析

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

相关内容

热门资讯

美专家:美军若向北京上海扔核弹... 美国向北京、上海扔核武器,中国也不会报复美国本土?这番呓语出自美国国务卿办公室前主任劳伦斯·威尔克森...
泰山队近况:瓦科降薪100万欧... 泰山队的更衣室最近可谓是风起云涌,并非因为大牌球星的加入,而是51岁的西班牙老教练阿韦尔·莫雷诺的到...
泽连斯基:若普京同意停火60天... 当地时间26日,总台记者获悉,乌克兰总统泽连斯基表示,若俄罗斯总统普京同意为期60天的停火,他将把整...
换帅无用!杰克逊25分王俊杰1... 【搜狐体育战报】北京时间12月26日CBA常规赛第6轮,主场作战的宁波町渥以88-79击败浙江稠州金...
原创 保... 演员保剑锋这次没在戏里“黑化”,却在现实中拿起了法律武器。12月26日,其工作室一纸律师声明,宣布已...
塔里-伊森领跑火箭队交易预测!... 随着NBA交易截止日的临近,各支球队的交易传闻如火如荼,而在休斯顿火箭队,塔里-伊森成为了最受关注的...
8分钟进五环、11分钟达四环!... 我市交通基础设施持续扩容升级:京密高速新国展段天北路至安华街主路,及远通桥立交节点改造工程新建南向西...
普京表示“除了顿巴斯其他可以谈... 【文/观察者网 王一】乌克兰总统泽连斯基日前抛出“20点和平计划”草案后,外界议论纷纷,普遍认为该方...
多国考虑效仿澳大利亚!德国数字... 德国媒体26日报道,德国数字化和国家现代化部长卡斯滕·维尔德贝格尔对本国效仿澳大利亚实施未成年人社交...
金证股份(600446)披露拟... 截至2025年12月26日收盘,金证股份(600446)报收于15.75元,较前一交易日下跌0.19...