1. 程式人生 > >LeetCode-45.跳躍遊戲II(考察點:貪心演算法)

LeetCode-45.跳躍遊戲II(考察點:貪心演算法)

給定一個非負整數陣列,你最初位於陣列的第一個位置。

陣列中的每個元素代表你在該位置可以跳躍的最大長度。

你的目標是使用最少的跳躍次數到達陣列的最後一個位置。

示例:

輸入: [2,3,1,1,4]
輸出: 2
解釋: 跳到最後一個位置的最小跳躍數是 2。
    從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步到達陣列的最後一個位置。

說明:

假設你總是可以到達陣列的最後一個位置。

解題思路:貪心演算法,這裡貪心的意思,不是說當前位置最大可以跳多少步就跳多少步,而是在當前位置可以跳的步數的範圍內,選擇下一跳可以跳的最遠的那個步數,來決定當前跳多少步。聽起來可能有點繞,用上面的示例做一個說明:

其實重點不在於判斷當前位置跳幾步,而是要記錄在當前位置可以到達的範圍內,下一跳可以到達的最遠位置,如下面程式碼中的裡層for迴圈,就記錄了當前位置可以到達的範圍內,下一跳可以到達的最遠位置,而並不關心從當前位置跳多少步。

java程式碼:

class Solution {
    public int jump(int[] nums) {
        //left記錄當前位置可到達範圍的左邊界,right記錄當前位置可到達的右邊界
        int len = nums.length, jumpCnt = 0, left = 0, right = 0;
        while(right < len-1){
            int maxBound = right;
            for(int i = left; i <= right; i++)
                maxBound = Math.max(nums[i]+i, maxBound);
            left = right + 1;
            right = maxBound;
            jumpCnt++;
        }

        return jumpCnt;
    }
}

相關推薦

LeetCode-45.跳躍遊戲II考察點貪心演算法

給定一個非負整數陣列,你最初位於陣列的第一個位置。 陣列中的每個元素代表你在該位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達陣列的最後一個位置。 示例: 輸入: [2,3,1,1,4] 輸出: 2 解釋: 跳到最後一個位置的最小跳躍數是 2。 從下

[leetcode] 45. 跳躍遊戲 II(Java)(動態規劃)

com max https 重疊 http findmi 條件 leetcode scrip 45. 跳躍遊戲 II 動態規劃 此題可以倒著想。 看示例: [2,3,1,1,4] 我們從後往前推,對於第4個數1,跳一次 對於第3個數1,顯然只能跳到第4個數上,那麽從第3個數

LeetCode---45.跳躍遊戲II

題目來源:https://leetcode-cn.com/problems/jump-game-ii/description/ 題目描述: 演算法描述:這題是上一個題的升級版,詳情請見https://blog.csdn.net/qq_39241239/article/details/8

45. 跳躍遊戲IIJump Game II

題目描述 給定一個非負整數陣列,你最初位於陣列的第一個位置。 陣列中的每個元素代表你在該位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達陣列的最後一個位置。 示例: 輸入: [2,3,1,1,4] 輸出: 2 解釋: 跳到最後一個位置的最小跳躍數是 2。 從下標為

LeetCode-45. 跳躍遊戲 II

題目地址:https://leetcode-cn.com/problems/jump-game-ii/ 思路:剪枝無效情況,從前之後更新一遍就可以了。 AC程式碼: class Solution { public: int jump(vector<int>&

LeetCode 45. 跳躍遊戲 II | Python

### 45. 跳躍遊戲 II --- 題目來源:[https://leetcode-cn.com/problems/jump-game-ii](https://leetcode-cn.com/problems/jump-game-ii) #### 題目 --- 給定一個非負整數陣列,你最初位於陣列

LeetCode-46.全排列考察點回溯演算法

給定一個沒有重複數字的序列,返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解題思路:這個...感覺很難講明白,

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

給定一個非負整數陣列,你最初位於陣列的第一個位置。 陣列中的每個元素代表你在該位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達陣列的最後一個位置。 示例: 輸入: [2,3,1,1,4] 輸出: 2 解釋: 跳到最後一個位置的最小跳躍數是 2。 從下標

leetcode:跳躍遊戲IIjava貪心演算法

package LeetCode; public class Jump { public int jump(int[] nums) { //跳躍次數 int cont=0; //跳出條件 int n=nums.length; //為了儲存每次

45. 跳躍遊戲 II

給定一個非負整數陣列,你最初位於陣列的第一個位置。 陣列中的每個元素代表你在該位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達陣列的最後一個位置。 示例: 輸入: [2,3,1,1,4] 輸出

LeetCode-122.買賣股票的最佳時機II相關話題貪心演算法

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 示例 1: 輸入: [7,1,5,3,6,4] 輸出:

Leetcode 45. Jump Game II貪心

45. Jump Game II 題目連結:https://leetcode.com/problems/jump-game-ii/ Description: Given an array of non-negative integers, you are initially positione

LeetCode-44.萬用字元匹配考察點動態規劃

給定一個字串 (s) 和一個字元模式 (p) ,實現一個支援 '?' 和 '*' 的萬用字元匹配。 '?' 可以匹配任何單個字元。 '*' 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹配成功。 說明: s 可能為空,且只包含從 a-z 的小寫字母。 p

LeetCode 598. Range Addition II 區域範圍內加法

res val 標簽 pub 所有 ive time mat nat   Given an m * n matrix M initialized with all 0‘s and several update operations. Operations are repre

LeetCode 59. Spiral Matrix II 螺旋矩陣之二

question hms 參考 ger should rate spa 條件 日期 Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order

LeetCode 940. Distinct Subsequences II遞推找規律

Given a string S, count the number of distinct, non-empty subsequences of S . Since the result may be large, return the answer m

Leetcode演算法——45跳躍遊戲II

給定一個非負整數的陣列,每一個元素表示從當前位置開始跳躍一次的最大長度。 你一開始站在第一個索引的位置。 你的目標是用最少的跳躍次數到達最後一個索引位置。輸出跳躍次數。 備註: 假設肯定可以跳到最後一個位置。 示例: Input: [2,3,1,1,4] Output

LeetCode 45. Jump Game II 跳躍遊戲II,求最少跳躍次數 (貪心)

給定一個非負整數陣列,你最初位於陣列的第一個位置。 陣列中的每個元素代表你在該位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達陣列的最後一個位置。 示例: 輸入: [2,3,1,1,4] 輸出: 2 解釋: 跳到最後一個位置的最小跳躍數

45. Jump Game II跳躍遊戲II

問題描述 Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the a

Leetcode 45 Jump Game II 跳躍遊戲2 最好畫一下圖

題目:給定一個非負整數陣列,你最初位於陣列的第一個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後一個位置。示例:輸入: [2,3,1,1,4] 輸出: 2 解釋: 跳到最後一個位置的最小跳躍數是 2。   從下標為 0