首先我們先明確:題目條件提示我們總是可以到達最後乙個節點,那麼該題與跳躍遊戲之間有什麼不同呢?首先本題已經假設我們總是可以到達最後乙個點,所以我們不用再判斷是否可以到達最後乙個位置,其次,本題要求跳躍次數最少,那麼我們如何從跳躍遊戲的相關思路解決這道題呢?
要求跳躍次數最少,那麼本質上還是每次都要盡量跳最遠,,那麼我們如何選擇跳躍策略呢?答案是:在範圍內選擇乙個可以跳更遠的點進行跳躍
class solution
int current_max_index = nums[0];//當前可達到的最遠位置,設定每次選擇跳躍點的遍歷範圍
int pre_max_max_index = nums[0];//遍歷當前範圍中,可以達到的最遠位置
int jump_min = 1;//這裡預設跳了一步,即已經設定了範圍
for (int i = 1; i < nums.size(); i++)
pre_max_max_index =max(pre_max_max_index, nums[i] + i);//每次都更新當前範圍中,可以到達的最遠位置
}return jump_min;}};
本題類似於前面的跳躍遊戲,也是採用貪心演算法,在當前範圍內選擇可以跳更遠的點進行跳躍 跳躍遊戲II
跳躍遊戲ii 給出乙個非負整數陣列,你最初在陣列第乙個元素的位置 陣列中的元素代表你在這個位置可以跳躍的最大長度 你的目標是用最少的跳躍次數來到達陣列的最後乙個元素的位置 例如給出陣列 a 2,3,1,1,4 最少需要兩次才能跳躍到陣列最後乙個元素的位置。從陣列下標為0的位置跳長度1到達下標1的位置...
跳躍遊戲 II
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...
跳躍遊戲 II
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...