zoukankan      html  css  js  c++  java
  • jump-game-ii

    /**
    * 给出一个非负整数数组,你最初在数组第一个元素的位置
    * 数组中的元素代表你在这个位置可以跳跃的最大长度
    * 你的目标是用最少的跳跃次数来到达数组的最后一个元素的位置
    * 例如
    * 给出数组 A =[2,3,1,1,4]
    * 最少需要两次才能跳跃到数组最后一个元素的位置。
    *(从数组下标为 0的位置跳长度1到达下标1的位置,然后跳长度3到数组最后一个元素的位置)
    */

    /**
     * 给出一个非负整数数组,你最初在数组第一个元素的位置
     * 数组中的元素代表你在这个位置可以跳跃的最大长度
     * 你的目标是用最少的跳跃次数来到达数组的最后一个元素的位置
     * 例如
     * 给出数组 A =[2,3,1,1,4]
     * 最少需要两次才能跳跃到数组最后一个元素的位置。
     *(从数组下标为 0的位置跳长度1到达下标1的位置,然后跳长度3到数组最后一个元素的位置)
     */
    
    public class Main57 {
        public static void main(String[] args) {
            int[] A = {2,3,1,1,4};
            System.out.println(Main57.jump(A));
        }
    
        public static int jump(int[] A) {
    
    //        int[] dp = new int[A.length]; // dp存放都到各点的最小步数
    //        for (int i = 0; i < dp.length; i ++) {
    //            int maxPosition = Math.min(i + A[i], A.length - 1); // 从i点出发能走的最远距离
    //            for (int j = i + 1; j <= maxPosition; j ++) {
    //                if(dp[j] == 0) dp[j] = dp[i] + 1; // 如果位置没被走过,则到达j点的步数为dp[i]+1
    //        }
    //            if(dp[A.length - 1] != 0) break; // 当第一次到达终点时,肯定是到达终点最短的步数
    //        }
    //        return dp[A.length - 1];
            int jumps = 0, curEnd = 0, curFarthest = 0;
            for (int i = 0; i < A.length - 1; i++) {
                curFarthest = Math.max(curFarthest, i + A[i]);
                if (i == curEnd) {
                    jumps++;
                    curEnd = curFarthest;
                }
            }
            return jumps;
        }
    }
    

      

  • 相关阅读:
    使用kbmMW#1轻松实现REST
    kbmMW集成JWT
    kbmMW TkbmMWHashSHA256与Delphi 10.2 THashSHA2算出相同的结果
    REST easy with kbmMW #14 – DB Controlled login
    java的三种随机数生成方式
    Java中如何获取一个类中泛型的实际类型
    java格式化时间到毫秒
    Java Base64Utils ----Utils
    file 从InputStream读取byte[]示例
    Java四种引用类型
  • 原文地址:https://www.cnblogs.com/strive-19970713/p/11376085.html
Copyright © 2011-2022 走看看