Leetcode 跳躍遊戲 貪心

2021-09-01 09:19:05 字數 1174 閱讀 5522

題目描述

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

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

判斷你是否能夠到達最後乙個位置。

示例 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...