Je publie mes solutions aux défis HackerRank afin d'améliorer mon apprentissage, de renforcer mes connaissances et d'établir une compréhension des concepts abordés. Si j'aide quelqu'un en partageant en cours de route, c'est encore mieux!
Jumping On Clouds est l'un des défis initiaux avec une difficulté 'EASY'.
Emma joue à un nouveau jeu mobile qui commence par des nuages numérotés consécutivement. Certains nuages sont thunderheads et d'autres sont des cumulus. Elle peut sauter dans n'importe quel cumulus dont le nombre est égal au nombre de nuages actuels plus 1 ou 2. Elle doit éviter les nuages d'orage. Déterminez le nombre minimum de sauts nécessaires à Emma pour sauter de sa position de départ au dernier nuage. Il est toujours possible de gagner la partie.
Pour chaque jeu, Emma recevra una matrice de nuages numérotés 0
s'ils sont sûrs ou 1
s'ils doivent être évités. Par exemple, c = [0, 1, 0, 0, 0, 1, 0]
indexé de 0...6
. Le numéro de chaque nuage est son index dans la liste, il faudrait donc éviter les nuages avec les indices 1 et 5. Il pourrait prendre les deux chemins suivants: 0 -> 2 -> 4 -> 6
ou 0 -> 2 -> 3 - > 4 -> 6
. Le premier chemin prend 3
sauts tandis que le second prend 4
.
Une fonction qui renvoie le nombre minimum de sauts requis, sous la forme d'un entier.
0 0 1 0 0 1 0
4
function jumpingOnClouds (c ) {
let steps = 0 ,
i = 0 ;
while (i < c .length - 1 ) {
if ((i + 2 < c .length ) && c [i + 2] == 0 ) {
i += 2 ;
} else {
i++ ;
}
steps++ ;
}
return steps;
}
let steps = 0 ,
i = 0 ;
J'ai d'abord créé deux variables; steps
pour compter le nombre minimum d'étapes requises; i
pour parcourir lo whileloop;
J'ai opté pour une whileloop au lieu d'une forloop car pour la première instruction if ((i + 2 < c.length) && c[i + 2 ] == 0)
, je veux incrémenter i += 2
et pas seulement de 1.
J'essaie toujours de sauter deux nuages. Si ce n'est pas possible à cause d'un nuage d'orage, sautez 1 nuage. Donc je fais ça jusqu'à ce que le pointeur soit enfin sur le dernier nuage.
Enfin, je finalise la fonction en retournant le décompte final.
Autres langues que je parle
def jumpingOnClouds (c )
steps = 0
i = 0
while (i < c .length - 1 ) do
if ((i + 2 < c .length ) && c [i + 2] == 0 )
i += 2
else
i += 1
end
steps += 1
end
steps
end
def jumpingOnClouds (c ):
steps = 0
i = 0
while (i < len (c ) - 1 ):
if ((i + 2 < len (c )) and c [i + 2] == 0 ):
i += 2
else :
i += 1
end
steps += 1
return steps
func jumpingOnClouds (c []int32 ) int32 {
var steps int32
i := 0
for {
if i + 2 < len (c ) && c [i + 2] == 0 {
i += 2
} else {
i++
}
steps++
if i <= len (c ) - 1 {
break
}
}
return steps
}
def jumpingOnClouds (c : Array [Int ]): Int = {
var steps = 0
var i = 0
while (i < c .length - 1 ) {
if ((i + 2 < c .length ) && c (i + 2) == 0 ) {
i += 2
} else {
i += 1
}
steps += 1
}
return steps
static int jumpingOnClouds (int [] c ) {
int steps = 0 ,
i = 0 ;
while (i < c .length - 1 ) {
if ((i + 2 < c .length ) && c [i + 2] == 0 ) {
i += 2 ;
} else {
i += 1 ;
}
steps += 1 ;
}
return steps;
function jumpingOnClouds ($c ) {
$steps = 0 ;
$i = 0 ;
while ($i < count ($c ) - 1 ) {
if (($i + 2 < count ($c )) && $c [$i + 2] == 0 ) {
$i += 2 ;
} else {
$i++ ;
}
$steps++ ;
}
return $steps;
Pensée: Généralement, les gens qui savent peu parlent beaucoup, et les gens qui savent beaucoup parlent peu