Description du titre:
Étant donné un tableau d'entiers non négatifs, vous êtes initialement à la première position du tableau.
Chaque élément du tableau représente la longueur maximale que vous pouvez sauter à cette position.
Déterminez si vous pouvez atteindre la dernière position.
Exemple 1:
Entrée: [2,3,1,1,4]
Sortie: vrai
Explication: Nous pouvons sauter d'un pas en premier, passer de la position 0 à la position 1, puis sauter de 3 étapes de la position 1 à la dernière position.
Exemple 2:
Entrée: [3,2,1,0,4]
Sortie: faux
Explication: Quoi qu'il en soit, vous atteindrez toujours la position de l'index 3. Mais la longueur de saut maximale à cette position est de 0, vous ne pouvez donc jamais atteindre la dernière position
Idée: algorithme gourmand, chaque fois que vous trouvez la valeur maximale de la valeur du tableau qui peut être sautée, voyez si vous pouvez sauter à la fin grâce à cette valeur maximale. Impossible de sauter à la fin, choisissez la plus grande valeur pour sauter. Répétez ensuite l'opération ci-dessus.
class Solution {
public:
bool canJump(vector<int>& nums) {
int n = nums.size();
int rightmost = 0; //最远可以到达的地方
//遍历数组
for (int i = 0; i < n; ++i) {
if (i <= rightmost) {
//如果较大值可以到达,则说明可以到达
rightmost = max(rightmost, i + nums[i]);
if (rightmost >= n - 1) {
return true;
}
}
}
return false;
}
};
Adresse de référence: https://leetcode-cn.com/problems/jump-game/solution/tiao-yue-you-xi-by-leetcode-solution/