跳躍遊戲b LeetCode 45

2021-10-08 21:04:43 字數 1126 閱讀 8244

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

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

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

示例:輸入: [2,3,1,1,4]

輸出: 2

解釋: 跳到最後乙個位置的最小跳躍數是 2。

從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步到達陣列的最後乙個位置。

說明:假設你總是可以到達陣列的最後乙個位置。

貪心規律:

一直往前找,直到找到了超過當前最大能到的位置 ,這時必須要跳一步了

應該跳到是當前能到達位置中的能到達最遠的。

演算法思路:

1.設定current_max_index為當前可達到的最遠位置;

2.設定pre_max_max_index為在遍歷各個位置的過程中,各個位置可達到的最遠位置;

3.設定jump_min為最少跳躍的次數。

4.利用i遍歷nums陣列,若i超過 current_max_index,jump_min加1,current_max_index = pre_max_max_index

5.遍歷過程中,若nums[i]+i (index[i])更大,則更新pre_max_max_index = nums[i] + i。

#include

#include

#include

using

namespace std;

class

solution

int current_max_index = nums[0]

;int jump_min =1;

int pre_max_index = nums[0]

;for

(int i =

1; i < nums.

size()

; i++

)//第i個位置能到達更遠的地方

if(nums[i]

+ i > pre_max_index)

}return jump_min;}}

;int

main

(void

)

45 跳躍遊戲 II

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

45 跳躍遊戲 II

貪心 每一步都挑選下一步能達到的最遠距離。2,3,1,1,4 1 2 3 4 5 以下數字指代下標1 5.第一次可以跳到下標2或者3,如果跳到2,下一步最遠可以跳到5,如果跳到3,下一步只能跳到4,所以這一次選擇跳到2。如果某一步的最遠距離跨過了5或者到達了5,說明可以跳到終點。本題已經說了肯定可以...

45 跳躍遊戲 II

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