1. 程式人生 > >JAVA程式碼—演算法基礎:跳躍遊戲(II)

JAVA程式碼—演算法基礎:跳躍遊戲(II)

跳躍遊戲(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.)

Note:
You can assume that you can always reach the last index.

演算法設計:

package com.bean.algorithmbasic;

public class JumpGameII {

    public static int jump(int[] nums) {
        // If nums.length < 2, means that we do not
// need to move at all. if (nums == null || nums.length < 2) { return 0; } // First set up current region, which is // from 0 to nums[0]. int l = 0; int r = nums[0]; // Since the length of nums is greater than // 1, we need at least 1 step.
int step = 1; // We go through all elements in the region. while (l <= r) { // If the right of current region is greater // than nums.length - 1, that means we are done. if (r >= nums.length - 1) { return step; } // We should know how far can we reach in current // region. int max = Integer.MIN_VALUE; for (; l <= r; l++) { max = Math.max(max, l + nums[l]); } // If we can reach far more in this round, we update // the boundary of current region, and also add a step. if (max > r) { l = r; r = max; step++; } } // We can not finish the job. return -1; } public static void main(String[] args) { // TODO Auto-generated method stub int [] arrayDemo= {2,3,1,1,4}; int result=jump(arrayDemo); System.out.println("ANSWER is: "+result); } }

(完)

相關推薦

JAVA程式碼演算法基礎跳躍遊戲II

跳躍遊戲(Jump Game II) 問題描述: Given an array of non-negative integers, you are initially positioned at the first index of the array.

JAVA程式碼演算法基礎最少貨幣換錢問題求解動態規劃

最少貨幣換錢問題求解(動態規劃) 問題:換錢問題 給定一個數組arraydemo,arraydemo中所有的值都為正數且不重複。 每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定一個整數aim代表要找的錢數, 求組成aim的最少貨幣數

JAVA程式碼演算法基礎數塔問題動態規劃

數塔問題(使用動態規劃思路求解) 如圖所示,給定一個正整數構成的三角形,如下所示: 在下面的數字三角形中尋找一條從頂部到底邊的路徑, 使得路徑上所經過的數字之和最大。 路徑上的每一步都只能往左下或者右下走。 只需要求出這個最大和即可,不必給出路徑。

JAVA程式碼演算法基礎Minimum Path Sum問題

Minimum Path Sum問題 該問題來自 LeetCode 的第64題。 64. Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path

JAVA程式碼演算法基礎子陣列的最大累加和問題

子陣列的最大累加和問題 JAVA程式碼實現 【問題描述】 給定一個一維陣列,返回子陣列的最大累加和。 例如,arraydemo=[1,-2,3,5,-2,6,-1];所有子陣列中,[3,5,-2,

JAVA程式碼演算法基礎字謎分組

字謎分組 問題描述:給定一個字串陣列,請將陣列中的元素進行分組。例如,給定字串陣列為: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],則返回結果為: [ [“ate”, “eat”,”tea”], [“na

【LeetCode-演算法】55. 跳躍遊戲Java實現

題目 給定一個非負整數陣列,你最初位於陣列的第一個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後一個位置。 示例1 輸入: [2,3,1,1,4] 輸出: true 解釋: 從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後

Leetcode 55跳躍遊戲最詳細的解法!!!

給定一個非負整數陣列,你最初位於陣列的第一個位置。 陣列中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最後一個位置。 示例 1: 輸入: [2,3,1,1,4] 輸出: true 解釋: 從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後一個位置

JAVA中的基礎-----過載與重寫覆蓋的區別overload與override

JAVA中多型的實現機制主要通過overload和override實現。 1)方法的過載:簡言之,就是指同一個類有多個同名的方法,這些方法擁有不同的引數(同名不同參)。可以認為是類中方法的多型性,也稱為編譯時多型。 2)方法的重寫(覆蓋):子類可覆蓋父類的方法,已達到“個性

python基礎元組tuple列表list介紹

一,元組 1.元組的建立(可以把元組看作一個容器,任何資料型別都可以放在裡面)通過賦值方法建立元組In [5]: t = ("hello",2.3,2,True,{1:"hello",2:"world"},) In [6]: type(t)Out[6]: tuple In [7]: t = (1) I

C#撲克牌遊戲2給CardLib新增Cards集合

(一):背景         在上一篇文章中,我們簡單建立了幾個可能在後面會用到的類並且放到了一個類庫中,接下來需要對這幾個類進行進一步的思考。首先一個問題是,我們原先在Deck類中,使用了一個數組來代表一副牌,但是我們知道,在一個撲克牌遊戲中,(例如鬥地

資料結構與演算法分析線性結構3

堆疊 1.計算機如何進行表示式求值     算術表示式: 由兩類物件構成:運算數,運算子號 不同運算子號優先順序不同    ①中綴表示式:把運算子號放在兩個運算數之間:a+b*c-d/e     &

Java面試系列總結 JavaSE高階

1. 說說你對Java中反射的理解 Java 中的反射首先是能夠獲取到 Java 中要反射類的位元組碼,獲取位元組碼有三種方法,1.Class.forName(className) 2.類名.class 3.this.getClass()。然後將位元組碼中的方法,變數,建構函式等

leetcode 55&&45 Jump Game 跳躍遊戲貪心

一、 思路: 這個題中等難度,只是問能不能調到最後的位置 需要維護的是當前能夠跳的最遠的地方 class Solution { public boolean canJump(int[] nums) { int max_index=0;

java提高篇——基礎查缺補漏面試

連結:http://blog.csdn.net/xiaokang123456kao/article/details/54233595 連結失效請複製改連結至位址列 一.java基本資料型別所佔的記憶體大小 在Java中一共有8種基本資料型別,其中有4種整型,2種浮點型別,1種用於表示Uni

Spring基礎依賴注入DI

一. Spring的概述 Spring是Java生態中最為成功的框架,他的核心思想是控制反轉(Inverse of Control)和麵向切面程式設計(Aspect Oriented Programming)。Spring的優勢: Spring可以通過配置(X

java輸入輸出11IO流FileOutputStream

FileOutputStream(String str)在建立物件的時候沒有這個檔案會建立該檔案,如果有這個檔案就會將其清空。 package filePackage; import java.io.F

Python基礎編碼規範4

1.命名規範   Python中不同程式碼元素採用不同命名方式:   ◊ 包名:全部小寫字母,中間可以由點分隔開。作為名稱空間,包名需具有唯一性。   ◊ 模組名:全部小寫字母,如果是多個單詞構成,使用下劃線分隔。   ◊ 類名:採用Pascal法命名,即每個單詞首字母大寫。如:Student。  

Python基礎資料型別5

在Python中,所有的資料型別都是類,每一個變數都是類的例項。 Python中有6種標準資料型別:數字(Number)、字串(String)、列表(List)、元組(Tuple)、集合(Sets)和字典(Dictionary)。 1.數字型別   Python中數字型別:整數型別、浮

Java排序演算法(五)--希爾排序ShellSort

希爾排序(插入排序-漸減增量排序diminishing increment sort): 思想:1.將原始陣列按照增量分解為多個數組,分別按插入排序調好子序列的順序;