題目描述
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後乙個位置。
示例 1:
輸入:[2,3,1,1,4]輸出:true解釋:從位置 0 到 1 跳 1 步, 然後跳 3 步到達最後乙個位置。示例 2:
輸入:[3,2,1,0,4]輸出:false解釋:無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。解題思路
貪心思想:
方法一:從前往後找。我們可以找到第乙個可以直接跳到最後乙個地方的點,然後把這個地方作為最後乙個點(這個點能到最後乙個,那麼只要能到這個點就能到最後乙個),一直迴圈,看看0這個地方能否作為最後乙個點,如果能則輸出true,否則輸出false。
bool canjump(int* nums, int numssize)
}if (numssize)
return false;
return true;
}
方法二:從後往前找。我們可以找到最後乙個可以直接跳到最後乙個地方的點,然後把這個地方作為最後乙個點(這個點能到最後乙個,那麼只要能到這個點就能到最後乙個),一直迴圈,看看0這個地方能否作為最後乙個點,如果能則輸出true,否則輸出false。
bool canjump(int* nums, int numssize)
方法三:用maxstep存當前跳躍的最大距離,迴圈遍歷出當前跳躍的最大距離。看看最後最大距離是否大於等於n,如果大於等於n則證明能到達最後乙個,否則不能。
#define max(a, b) a > b ? a : b
bool canjump(int* nums, int numssize)
return maxstep >= numssize - 1;
}
leetcode 跳躍遊戲 II 貪心
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...
Leetcode 55 跳躍遊戲 貪心
題目描述 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 ...
LeetCode 55 跳躍遊戲(貪心)
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 輸出 fa...