1824. 最少侧跳次数

1824. 最少侧跳次数

题解

  1. dp 数组: dp[i] 表示 到 第i条赛道的最小侧跳次数
class Solution {
   public int minSideJumps(int[] obstacles) {
        int INF = (int) 0x3f3f3f3f;
        int len = obstacles.length;
        int[] dp = new int[4];
        // 从赛道2开始
        dp[1] = 1;
        dp[3] = 1;
        for (int i = 1; i < len; i++) {
            int obstacle = obstacles[i];
            // 该点不可达
            dp[obstacle] = INF;
            for (int j = 1; j < 4; j++) {
                // obstacle条赛道此时是不可达的,不更新该赛道
                // 该赛道 只能从 该赛道的i-1位更新过来,或者从第i位的其他赛道 + 1 更新过来
                if (obstacle!=1) {
                    dp[1] = Math.min(dp[j] + 1, dp[1]);
                }
                if (obstacle!=2) {
                    dp[2] = Math.min(dp[j] + 1, dp[2]);
                }
                if (obstacle!=3) {
                    dp[3] = Math.min(dp[j] + 1, dp[3]);
                }
            }
        }
        // 取3条赛道最小值
        return Math.min(dp[1], Math.min(dp[2], dp[3]));
    }
}
posted @   Eiffelzero  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示