LeetCode第45题跳跃游戏 II

继续打卡算法题,今天学习的是LeetCode第45题跳跃游戏 II,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。

分析一波题目

先说说暴力解法,把每个位置到最终位置的跳跃次数全部记录下来,结果排序之和取最小的,这样想想比较简单,但是这样写代码复杂度增高了,需要两层循环,相当于时间复杂度O(m*n)。

有没有一层循环的办法呢?有的,我们循环每个数组元素,如果当前跳跃的大小比之前的位置小,就不跳跃,大于等于的情况才跳跃。

本题解题技巧

1、使用一层循环,不是每次都跳跃,而是等跳跃的位置比之前的都大的时候才跳跃

编码解决

java 复制代码
class Solution {
    public int jump(int[] nums) {
        int length = nums.length;
        int end = 0;
        int maxPosition = 0; 
        int steps = 0;
        for (int i = 0; i < length - 1; i++) {
            maxPosition = Math.max(maxPosition, i + nums[i]);
            //每次跳跃,选最大能跳跃的一个, 已经到上次跳跃后的最大位置,这个时候需要跳跃了
            if (i == end) {
                end = maxPosition;
                steps++;
            }
        }
        return steps;
    }
}

总结

这个跳跃游戏使用暴力解法比较麻烦,通过一层循环,不断的找最大可以跳跃的地方,达到了上次最大跳跃的地方再跳跃一次。

相关推荐
北域码匠3 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
指掀涛澜天下惊3 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
乌萨奇也要立志学C++3 小时前
【洛谷】kmp算法
开发语言·算法
禹凕3 小时前
Dijkstra算法详解与应用
python·算法
步行cgn4 小时前
YAML 的语法规则
spring boot·后端
YaraMemo4 小时前
元启发式算法框架
人工智能·算法·5g·信息与通信·启发式算法·信号处理
骇客野人4 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
weixin_307779135 小时前
一维无粘 Burgers 方程的激波形成问题:MacCormack 格式求解
c++·算法·matlab
HugoStudio_SWAN5 小时前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
枫叶林FYL6 小时前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法