Niños con la mayor cantidad de dulces - LeetCode 1431


Descripción

Se tiene un arreglo llamado candies que indica cuántos dulces tiene cada uno de n niños, el número en la posición i (candies[i]) indica la cantidad de dulces que tiene el niño i.

Un número entero extraCandies, indica una cantidad de dulces extra que se tienen.

Completa la función kidsWithCandies para que devuelva un arreglo de valores booleanos de tamaño n, dónde result[i] sea true si el niño en la posición i tiene la mayor cantidad de dulces después de darle la cantidad extra de ducles indicada por extraCandies; El resultado será false si aún después de dar extraCandies al niño en la posición i, no tiene la mayor cantidad de dulces.

Nota que puede haber varios niños con la mayor cantidad de dulces al mismo tiempo.

Ejemplo 1

Entrada: candies = [2,3,5,1,3], extraCandies = 3
Salida: [true,true,true,false,true] 

Explicación: Si se dan extraCandies a:
- Niño 1, tendrá 2 + 3 = 5 dulces, lo cuál es la mayor cantidad de dulces.
- Niño 2, tendrá 3 + 3 = 6 dulces, lo cuál es la mayor cantidad de dulces.
- Niño 3, tendrá 5 + 3 = 8 dulces, lo cuál es la mayor cantidad de dulces.
- Niño 4, tendrá 1 + 3 = 4 dulces, lo cuál NO es la mayor cantidad de dulces.
- Niño 5, tendrá 3 + 3 = 6 dulces, lo cuál es la mayor cantidad de dulces.

Ejemplo 2:

Entrada: candies = [4,2,1,1,2], extraCandies = 1
Salida: [true,false,false,false,false] 
Explicación: Sólo hay 1 dulce extra.
El niño 1 siempre tendrá la mayor cantidad de dulces, incluso si los dulces extra se dan a un niño diferente.

Ejemplo 3:

Entrada: candies = [12,1,12], extraCandies = 10
Salida: [true,false,true]

Restricciones:

  • n == candies.length
  • 2 <= n <= 100
  • 1 <= candies[i] <= 100
  • 1 <= extraCandies <= 50

Solución

Mostrar solución
class Solution:
    def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
        # 1. encontrar el elemento mayor (referencia)
        ref = max(candies)
        results = []

        # 2. recorrer la lista
        for c in candies:
            # 2.1 sumar los extraCandies a cada elemento
            possible_max = c + extraCandies

            # 2.2 comparar con la referencia
            if possible_max >= ref:
                # 2.3 asignar verdadero o falso si es mayor o menor que le referencia
                results.append(True)
            else:
                results.append(False)
                
        return results

Solución en Google Colab Probar Solución

-

Live Resolviendo el Ejercicio

Fuente del ejercicio: https://leetcode.com/problems/kids-with-the-greatest-number-of-candies