leetcode jump game ii

题目:

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.)

 这一题是自己做出来的。

首先考虑动态规划的方法。定义一个数组distance[n] (n=A.length) distance[i]表示从A[0]移动到A[i]所需的最少步数。

初始化时,所有distance[i]都为postive limit。表示都不可达。

然后依次加入元素,第一轮循环从A[0]开始,表示从A[0]出发达到各个点的最小步数。

第二轮从A[1]开始,表示,从A[1]出发到达各个点的最小步数。

。。。。以此类推

则其状态转移方程为

if((j-i)<distance[i])//从i出发是否可以到达jif(distance[i]+1<distance[j])//这一路线是否比当前路线更优 
distance[j]=distance[i]+1

然而超时。

 

 

考虑了一下,该题的Tag中有Greedy。则开始考虑贪心的方法。

这个题目中,只要A[i]的值大于其步长,就可以跳到。因此,只要考虑这个条件即可。

不再考虑元素位置,而考虑步数。即,一步最远可以跳到哪,两步最远可以跳到哪,以此类推,直到可以跳到终点。

以两步为例

从A[0]出发最远可以到达A[i]。则当0<k<i 时,A[k]都可以一步到达

因此,当情况为2步时,可以从1-i中中任意一点为出发点,计算其最远可以到达的地方,假设为j。

当情况为3步时,只需计算从i,i+1,i+2....j出发,可以达到的最远距离。

当最远距离超过数组A的长度时,即返回步数。

下面给出代码

 

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;public class Solution {/*** @param args*/ public int jump(int[] nums) {int end=nums[0];int path=1;int lastPoint=0;int next=nums[0];if(nums.length==1)return 0;while(true){if(next>=nums.length-1)return path;next=findMaxMid(nums,lastPoint,end);path++;lastPoint=end;end=next;//    System.out.println(lastPoint+"*"+end);
            }}public int findMaxMid(int []nums,int lastPoint,int end){int max=-1;int maxIndex=-1;for(int i=lastPoint;i<=end;i++){if(max<nums[i]+i){max=nums[i]+i;maxIndex=i;}}return max;}public static void print(int []nums){String result="{";for(int i:nums){result+=i+",";}System.out.println(result+"}");}public static void main(String[] args) {// TODO Auto-generated method stubint []a=new int[10000];for(int i=0;i<10000;i++){a[i]=1;}int []b={2,3,1,1,4};int []c=new int[25002];for(int i=25000;i>=1;i--){c[25000-i]=i;}c[25000]=1;c[25001]=0;//new Solution2().print(c);Scanner scanner=null;try {scanner=new Scanner(new File("D://data.txt"));} catch (FileNotFoundException e) {// TODO Auto-generated catch block
            e.printStackTrace();}int[] d=new int[30000];int i=0;while(scanner.hasNext()){String all=scanner.next();for(String as:all.split(",")){d[i]=Integer.parseInt(as);i++;}}for(int j=0;j<i;j++){c[j]=d[j];}print(c);System.out.println(new Solution().jump(c));}}

 

转载于:https://www.cnblogs.com/elnino/p/5454639.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

韩师师范学院计算机科学与技术在哪个学区,2017年韩山师范学院本科插班生考试《数据结构》A卷...

韩山师范学院2017年本科插班生考试试卷计算机科学与技术 专业 数据结构 试卷(A 卷)一、单项选择题(每题2分&#xff0c;共30分)1. 对线性表&#xff0c;在下列哪种情况下应当采用链表表示&#xff1f;( ) A. 经常需要随机地存取元素 B. 经常需要进行插入和删除操作 C. 表中元素…

JAVA取随机数,石头剪刀布实例

一、取随机数&#xff1a; import java.util.Random; //导入随机数 public class Test{public static void main(String[] args){Random xx new Random(); //声明随机数int number xx.nextInt(10); //赋值随机数给numberSystem.out.println("随机数…

计算机网络犯罪和一般犯罪的不同,论计算机网络犯罪题稿.doc

目 录摘要2第一章、网络犯罪概念、特点以及构成特征5(一)网络犯罪的概念认定5(二)网络犯罪的特点6(三)网络犯罪的构成7第二章、?网络犯罪的类型9(一)网络色情和性骚扰9(二)欺诈9(三)贩卖、销售违禁物品11(四)妨害名誉、侵犯个人隐私12(五)?制造、传播计算机病毒12第三章、?网…

实例变量和静态变量(或类变量static)

一个类通过使用运算符new可以创建多个不同的对象&#xff0c;这些对象将被分配不同的内存空间&#xff0c;准确的说法是&#xff1a;不同对象的实例变量将被分配不同的内存空间&#xff0c;如果类中有类变量&#xff0c;那么所有对象的这个类变量都被分配到同一处内存&#xff…

DB2 数据库清表语句

truncate table DWDM2.tablename IMMEDIATE; alter table DWDM1.tablename activate not logged initially with empty table&#xff1b; but which one is best ? the truncate should be better 转载于:https://www.cnblogs.com/TendToBigData/p/10501485.html

cnblogs_504 Gateway Time-out

地址&#xff1a;http://zzk.cnblogs.com/s?tb&w%E6%B1%82%E8%81%8C 504 Gateway Time-out 504 Gateway Time-out The gateway did not receive a timely response from the upstream server or application. Sorry for the inconvenience. Please report this message an…

第一阶段

初步实现了相机的调用&#xff0c;做了简单界面&#xff0c;并没有实现核心功能 Button button (Button) findViewById(R.id.sao);button.setOnClickListener(new OnClickListener(){Overridepublic void onClick(View v) {Intent intent new Intent(MediaStore.ACTION_IMAGE…

JavaScript 详说事件机制之冒泡、捕获、传播、委托

DOM事件流&#xff08;event flow &#xff09;存在三个阶段&#xff1a;事件捕获阶段、处于目标阶段、事件冒泡阶段。 事件捕获&#xff08;event capturing&#xff09;&#xff1a;通俗的理解就是&#xff0c;当鼠标点击或者触发dom事件时&#xff0c;浏览器会从根节点开始…

很棒的HTML5效果实例

2019独角兽企业重金招聘Python工程师标准>>> http://mrdoob.com/141/Internet_Explorer_with_WebGL 转载于:https://my.oschina.net/u/3647620/blog/1552495

计算机一级网络操作题没点回答,计算机等级一级考试操作题1(附答案)

一、选择题1、在计算机领域中通常用mips来描述______。a、计算机的运算速度 b、计算机的可靠性 c、计算机的可运行性 d、计算机的可扩充性2、微型计算机存储系统中&#xff0c;prom是______。a、可读写存储器 b、动态随机存取存储器 c、只读存储器 d、可编程只读存储器3、按161…

模拟 Codeforces Round #297 (Div. 2) A. Vitaliy and Pie

题目传送门 1 /*2 模拟&#xff1a;这就是一道模拟水题&#xff0c;看到标签是贪心&#xff0c;还以为错了呢3 题目倒是很长:)4 */5 #include <cstdio>6 #include <algorithm>7 #include <iostream>8 #include <algorithm>9 #include <cstr…

Socket 之 API函数介绍

1、创建套接字──socket() 应用程序在使用套接字前&#xff0c;首先必须拥有一个套接字&#xff0c;系统调用socket()向应用程序提供创建套接字的手段&#xff0c;其调用格式如下&#xff1a; SOCKET PASCAL FAR socket(int af, int type, int protocol); 该调用要接收三个参…

分配的访问权限的展台应用:最佳做法

原文: 分配的访问权限的展台应用&#xff1a;最佳做法 best practices guidance for developing a kiosk app for assigned access. 在 Windows 10 中&#xff0c;你可以使用锁屏框架和分配的访问权限创建展台应用&#xff0c;该应用允许用户与设备上的单个应用进行交互。 本文…

计算机工程 目录 2014年第1期 pdf,2013科技核心期刊目录有效期至2014年).pdf

2013科技核心期刊目录有效期至2014年).pdf中国科技核心期刊(中国科技论文统计源期刊)2013CODE 期刊名称2013 年新入选F034 ACTA BIOCHIMICA ET BIOPHYSICA SINICAC096 ACTA MATHEMATICA SCIENTIAB030 ACTA MATHEMATICA SINICA ENGLISH SERIESI051 ACTA MATHEMATICAE APPLICATAE…

SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的解决方案...

今天写了一个excel表的导入功能&#xff0c;结果在excel表中的内容导入到页面时报错&#xff1a;SQL Server 阻止了对组件 Ad Hoc Distributed Queries 的 STATEMENTOpenRowset/OpenDatasource 的访问&#xff0c;因为此组件已作为此服务器安全配置的一部分而被关闭。系统管…

Mongo客户端MongoVUE的基本使用

这里没有涉及到服务器以及客户端的安装&#xff0c;文章主要介绍mongo客户端mongoVUE的使用 一、数据库连接 点击绿色加号添加一个连接&#xff0c;输入name、server、port&#xff0c;点击save&#xff0c;点击connect进行连接 二、添加 1.右键添加一个Database 2.输入名称&am…

Vim杂记:Sublime的配色方案

一、前言                                     爱美之心人皆有之&#xff0c;sublime的配色实在好看&#xff0c;于是希望Vim也能这样。 二、配置                                     1.下载monok…

计算机一级考试有三科,全国计算机一级考试是一级WPS Office 一级MS Office 一级Photoshop 三个任选一个考试吗?...

满意答案nanrrui3j2017.08.24采纳率&#xff1a;41% 等级&#xff1a;9已帮助&#xff1a;415人全国计算机一级考试是有考试大纲的&#xff0c;按照大纲要求是三科都考。一级MS Office、一级WPS Office、一级Photoshop&#xff0c;一级共三个科目。完全采取上机考试形式&…

mysql索引结构原理、性能分析与优化

摘要&#xff1a; 第一部分&#xff1a;基础知识 第二部分&#xff1a;MYISAM和INNODB索引结构 1、简单介绍B-tree B tree树 2、MyisAM索引结构 3、Annode索引结构 4、MyisAM索引与InnoDB索引相比较 第三部分&#xff1a;MYSQL优化 1、表数据类型选择 2、sql语句优化 (1) 最…

Docker学习(三):镜像

2019独角兽企业重金招聘Python工程师标准>>> 1、简介 docker运行前需要本地存在对应的镜像&#xff0c;若镜像不存在本地&#xff0c;docker会先尝试从默认的镜像仓库下载&#xff08;Docker Hub公共注册服务器中的仓库&#xff09;。用户也可以配置&#xff0c;使用…