zoukankan      html  css  js  c++  java
  • 跳跃游戏

    package book.digui;
    /**
     * 跳跃游戏
     * @author airycide
     * 给定的一个数组arr,arr[i] == k,代表可以从位置i向右跳1~k个距离,比如:arr[2] = 3,
     * 代表从位置2的位置可以跳到位置3,位置4,位置5,如果从位置0出发返回最少跳几次能跳到arr最后的位置上
     * 举例说明:arr=[3,2,3,1,1,4]
     * arr[0] == 3,选择跳到位置2,arr[2] == 3,可以跳到最后的位置,所以返回2.
     *  
     *
     */
    public class Main1 {
    
    	public static void main(String[] args) {
    		int [] arr = {3,2,3,1,1,4};
    		System.out.println(jump(arr));
    	}
    	
    	public static int jump(int [] arr){
    		if (arr == null || arr.length == 0) {
    			return 0;
    		}else{
    			int jump = 0;
    			int cur = 0;
    			int next = 0;
    			for (int i=0;i<arr.length;i++) {
    				if (cur < i) {
    					jump++;
    					cur = next;
    				}
    				next = Math.max(next, i+arr[i]);
    			}
    			return jump;
    		}
    	}
    	
    }
    
    
    /**
     * 整型变量jump:代表目前跳了多少步。
     * 整型变量cur:代表如果只能跳jump步,最远能够到达的位置。
     * 整型变量next:如果再多跳一步,最远能够到达的位置。
     * 初始化:jump = 0,cur = 0;next = 0.
     * 2:从左到右遍历arr,假设遍历到i这个位置。
     * 如果cur>=i,说明jump步可以到达位置i,此时什么也不做。
     * 如果cur<i,说明只跳jump步不能到达位置i,需要多一步才行,此时令jump++,cur = next,表示多跳了一步,cur更新成跳jump+1步能够到达的位置,即next。
     * 将next更新成math.max(next,i+arr[i]),表示下一次多跳一步到达的最远的位置。
     * 返回最终jump就行。
     * 
     * 
     * 
     * 
     * 
     * 
     * 
     */
    
  • 相关阅读:
    Python基础09 面向对象的进一步拓展
    Python快速教程 (手册)
    Python基础03 序列
    Python基础04 运算
    Python基础08 面向对象的基本概念
    Python基础07 函数
    Python基础10 反过头来看看
    Python基础05 缩进和选择
    Python进阶02 文本文件的输入输出
    Python进阶01 词典
  • 原文地址:https://www.cnblogs.com/airycode/p/5804789.html
Copyright © 2011-2022 走看看