Olá, seja bem vindo a mais uma etapa do Resolvendo problemas no Hacker-Rank,nessa sessão iremos fazer um algoritmo que irá revelar a contagem de valer percorridos. Vejamos como separar isso.
Couting Valleys -
Nesse caso, teremos uma alpinista que anda por diversos locais, e que salva seus registros de caminhada. Ele tem um meio de salvar que tem como base subidas e descidas.
step =passos
u =subida
d =descida
path =contagemDeSubidaEDescida
Por exemplo, seu último registro foi passado do seguinte modelo:
steps = 8 path =[dduuudd]
Temos também certas regras a seguir nesse caso, com respeito a subida de montanhas e entrada em lagos.
Uma montanha é uma sequência de degraus consecutivos acima do nível do mar, começando com um degrau acima do nível do mar e terminando com um degrau abaixo do nível do mar.
Um vale é uma sequência de degraus consecutivos abaixo do nível do mar, começando com um degrau abaixo do nível do mar e terminando com um degrau subindo até o nível do mar.
Com isso, vejamos a solução encontrada para esse código:
function countingValleys(steps, path) {
// Write your code here
//step=passos,u=subida,d=descida,path=contagemDeSubidaEDescida
var traversedValleyCount = 0;
var `isInValley` = false;
var altitude = 0;
for (let i = 0; i < steps; i++) {
if (path[i] === "D") {
altitude--
C;
} else if (path[i] === "U") {
altitude++;
}
if (altitude < 0 && isInValley === false) {
isInValley = true;
} else if (isInValley === true && altitude === 0) {
traversedValleyCount++;
isInValley = false;
}
}
return traversedValleyCount;
}
O código acima começa com uma função que guarda steps
e path
como parâmetros. Logo após isso nós criamos as variáveis traversedValleyCount
,isInValley
e altitude
. Com uma sendo para caso seja um vale sendo atravessad´, averiguar se é um vale e sua altitude.
Com isso, criamos o primeiro laço for
que vai iterar o index baseado no número de steps
. Se o index de path
que guardará o número de subidas e descidas for igual a D, altitude irá diminuir. Caso contrário e for igual a U, irá aumentar. Também temos o caso da altitude for abaixo de 0, ou seja abaixo do nível do mar nesse caso, que seria quando entramos no vale, com isso o isInValley
que inicia com valor false
será true
.
Quando o isInValley
for igual true e ser igual a 0, adicionará mais 1, a contagem do traversedValleyCount
e o IsInValley
voltará a ser false. Após isso, nós retornamos o traversedValleyCount
com todos os casos prontos.
O resultado será:
8
UDDDUDUU
input: 1
Com isso concluímos mais um episódio, e nos vemos na próxima!!!
Top comments (0)