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.pswp.cn/news/257263.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257263.shtml
英文地址,請注明出處:http://en.pswp.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;使用…