给定一个数组,数组中的数值表示在当前位置能够向前跳动的最大距离。
 
求解出从下标为0开始到下标到数组最后一个所需要的最少跳动次数!
 
1、当数组为空或者数组长度等于1时,不需要跳动,因此返回0 否则初始化step=1
2、初始化left=0 right = nums[0] 当left<=right时进入循环体中。 
3、从第i=0开始,如果当前跳动距离大于数组长度则返回step
4、从left开始并且初始化为0 进行遍历,区间为[0 ,  right]  不断更新max的数值  max = Math.max( max ,  left + nums[left]) 
注意上面是left+nums[left]  这里直接表示将该位置假设移动到i==0下标时 ,相对于i==0能够向前移动的距离
5、如果max的数值大于当前的right值,则更新left=right ; right=max ;step++
6、判断left和right的大小关系。重复上述的3、4、5操作
 
参考代码: 
package leetcode_50;

/***
*
* @author pengfei_zheng
* 给定数组,找出最小跳动选择
*/
public class Solution45 {
public int jump(int[] nums) {
if (nums == null || nums.length < 2) {
return 0;
}
int left = 0;
int right = nums[0];
int step = 1;
while (left <= right) {
if (right >= nums.length - 1) {
return step;
}
int max = Integer.MIN_VALUE;
for (; left <= right; left++) {
max = Math.max(max, left + nums[left]);
}
if (max > right) {
left = right;
right = max;
step++;
}
}
return -1;
}
}

最新文章

  1. Sublime Text 基础配置
  2. vue 2 滚动条加载更多数据实现
  3. Qt model和tableview的使用
  4. Bitmap vs 2Bitmap的实现
  5. 聚类clustering
  6. localStorage兼容ie6/7 用addBehavior 实现
  7. Upgrading or Redeploying SharePoint 2010 Workflows
  8. java中的包装类与装箱拆箱定义
  9. PHP基础笔记汇总
  10. URAL 1069 Prufer Code 优先队列
  11. codeforces 333A - Secrets
  12. HDU5289
  13. 【剑指offer】从上向下打印二叉树
  14. Web端server推送技术原理分析及dwr框架简单的使用
  15. Zen Coding css,html缩写替换大观 快速写出html,css
  16. JQuery $ $.extend(),$.fn和$.fn.extend javaScript对象、DOM对象和jQuery对象及转换 工具方法(utility)
  17. PHP中json_encode与json_decode
  18. 自定义spring mvc的json视图
  19. 14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视
  20. 十六进制颜色转换为iOS可以用的UIColor

热门文章

  1. int[,] 和 int[][] 有什么区别
  2. C# 各种输入格式验证#各种输入格式验证
  3. mysql 5.1超过默认8小时空闲时间解决办法(错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure)
  4. OCA,OCP,OCM傻傻分不清?
  5. linux nginx,php开机启动
  6. javascript报错集锦
  7. rsync:重要的安全参数
  8. 详解MathType中如何更改公式颜色
  9. Google语音识别API 使用方法
  10. Connect to a ROS Network---2