博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Jump Game II 解题报告
阅读量:6886 次
发布时间:2019-06-27

本文共 1323 字,大约阅读时间需要 4 分钟。

Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Your goal is to reach the last index in the minimum number of jumps.
For example:
Given array A = 
[2,3,1,1,4]
The minimum number of jumps to reach the last index is 
2. (Jump 
1 step from index 0 to 1, then 
3 steps to the last index.)
[解题思路]
二指针问题,最大覆盖区间。
从左往右扫描,维护一个覆盖区间,每扫过一个元素,就重新计算覆盖区间的边界。比如,开始时区间[start, end], 遍历A数组的过程中,不断计算A[i]+i最大值(即从i坐标开始最大的覆盖坐标),并设置这个最大覆盖坐标为新的end边界。而新的start边界则为原end+1。不断循环,直到end> n.
[Code]
1:    int jump(int A[], int n) {  2:      // Start typing your C/C++ solution below  3:      // DO NOT write int main() function  4:      int start = 0;  5:      int end = 0;  6:      int count =0;  7:      if(n == 1) return 0;  8:      while(end < n)  9:      {  10:        int max = 0;  11:        count++;  12:        for(int i =start; i<= end ; i++ )  13:        {   14:          if(A[i]+i >= n-1)  15:          {            16:            return count;  17:          }  18:          if(A[i]+ i > max)  19:            max = A[i]+i;  20:        }  21:        start = end+1;  22:        end = max;        23:      }  24:    }
[注意]
Line7,当n=1的时候,需要特殊处理一下。

转载于:https://www.cnblogs.com/codingtmd/archive/2012/12/24/5078999.html

你可能感兴趣的文章
Python文件夹复制
查看>>
细谈 vue 核心- vdom 篇
查看>>
ajax+springmvc实现跨域请求
查看>>
SaltStack快速入门-配置管理
查看>>
批处理研究(QQ绿化和卸载)
查看>>
对比农行与建行网银业务办理流程
查看>>
Oracle 11G RAC 安装图示(一)
查看>>
【xpghost】xp系统启动后迟延问题如何解决
查看>>
浅谈ElasticSearch的嵌套存储模型
查看>>
离开外包又一段时间了
查看>>
aapt 解析android apk
查看>>
Layout Inflation不能这么用
查看>>
APNS远程推送证书的申请和制作——详细解析
查看>>
mongodb2.6.5--FAQ之分片(sharding)
查看>>
快速搭建Web环境 Angularjs + Express3 + Bootstrap3
查看>>
Android卫星菜单:android-satellite-menu
查看>>
Android 事件机制
查看>>
Sugarnms智和网管软件在煤矿监控系统中的应用
查看>>
Android Recyclerview 简单实用 瀑布流等方式,并加入上下拉加载
查看>>
Linux驱动开发学习日记
查看>>