-
Notifications
You must be signed in to change notification settings - Fork 0
/
day-14.js
31 lines (25 loc) · 1.19 KB
/
day-14.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
¡Hemos perdido a un reno y falta poco más de una semana para Navidad! 😱
Lo peor es que son tantos que no sabemos cuál es el que nos falta... ¡Qué lío! A ver, Elfon Musk ha hecho inventario y nos pasa un array con los ids de cada reno.
👍 Lo bueno: los ids son números que pueden ir del 0 al 100, no están repetidos y sólo se ha perdido un reno.
👎 Lo malo: la lista está desordenada y podría faltar el último...
Necesitamos una función que al pasarle la lista de ids de renos nos diga inmediatamente cuál es el que falta:
missingReindeer([0, 2, 3]) // -> 1
missingReindeer([5, 6, 1, 2, 3, 7, 0]) // -> 4
missingReindeer([0, 1]) // -> 2 (¡es el último el que falta!)
missingReindeer([3, 0, 1]) // -> 2
missingReindeer([9, 2, 3, 5, 6, 4, 7, 0, 1]) // -> 8
missingReindeer([0]) // -> 1 (¡es el último el que falta!)
Parece fácil con una complejidad de O(n)... ¿crees que podrías hacerlo mejor?
*/
export default function missingReindeer(ids) {
const max = Math.max(...ids)
let missing = null
for (let i = 0; i < max; i++) {
if (!ids.includes(i)) {
missing = i
break
}
}
return missing ?? max + 1
}