Skip to content

Commit 3d3fb40

Browse files
authored
Create Jump_Game_II.cpp
1 parent 4027aa8 commit 3d3fb40

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

LeetCode_45/Jump_Game_II.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include <vector>
2+
#include <climits> // Para usar INT_MIN
3+
4+
class Solution {
5+
public:
6+
int ans = 0; // Variável para armazenar o número de saltos
7+
8+
// Função principal que calcula o número mínimo de saltos
9+
int jump(std::vector<int>& nums) {
10+
int i = 0; // Começa no primeiro índice
11+
// Continua até alcançar o penúltimo índice
12+
while (i < nums.size() - 1) {
13+
i = helper(i, nums[i], nums); // Chama a função auxiliar para determinar o próximo salto
14+
}
15+
return ans; // Retorna o número total de saltos
16+
}
17+
18+
// Função auxiliar que encontra o melhor índice para pular
19+
int helper(int a, int b, std::vector<int>& nums) {
20+
ans++; // Incrementa o contador de saltos
21+
// Se o salto atual pode alcançar ou ultrapassar o último índice, terminamos
22+
if (a + b >= nums.size() - 1) {
23+
return nums.size(); // Retorna o tamanho do array para indicar que alcançamos o final
24+
}
25+
26+
int max = INT_MIN; // Variável para armazenar o valor máximo possível de alcance
27+
int temp = 0; // Variável para armazenar o índice do próximo salto
28+
// Itera sobre todos os índices possíveis de alcance do salto atual
29+
for (int i = a; i <= a + b; i++) {
30+
// Verifica se o índice atual permite alcançar uma posição mais distante
31+
if (nums[i] + i >= max) {
32+
temp = i; // Atualiza o índice do próximo salto
33+
max = nums[i] + i; // Atualiza o valor máximo de alcance
34+
}
35+
}
36+
return temp; // Retorna o índice do próximo salto
37+
}
38+
};

0 commit comments

Comments
 (0)