Enfants avec le plus grand nombre de bonbons

2020-10-21
2 min de lecture
Featured Image

Énoncé du problème

Étant donné le tableau bonbons et l’entier extraCandies, où bonbons[i] représente le nombre de bonbons que possède le ième enfant.

Pour chaque enfant, vérifiez s’il existe un moyen de distribuer extraCandies parmi les enfants de manière à ce qu’il ou elle puisse avoir le plus grand nombre de bonbons parmi eux. Notez que plusieurs enfants peuvent avoir le plus grand nombre de bonbons.

Exemples

Entrée : bonbons = [2,3,5,1,3], extraCandies = 3

 Sortie : [vrai, vrai, vrai, faux, vrai] 

`Explication : L’enfant 1 a 2 bonbons et s’il reçoit tous les bonbons supplémentaires (3), il aura 5 bonbons — le plus grand nombre de bonbons parmi les enfants.

Kid 2 a 3 bonbons et s’il reçoit au moins 2 bonbons supplémentaires, il aura le plus grand nombre de bonbons parmi les enfants. Kid 3 a 5 bonbons et c’est déjà le plus grand nombre de bonbons parmi les enfants.

L’enfant 4 a 1 bonbon et même s’il reçoit tous les bonbons supplémentaires, il n’aura que 4 bonbons. Kid 5 a 3 bonbons et s’il reçoit au moins 2 bonbons supplémentaires, il aura le plus grand nombre de bonbons parmi les enfants.`

Entrée : bonbons = [4,2,1,1,2], extraCandies = 1 Sortie : [vrai,faux,faux,faux,faux]

Contraintes:

  • 2 <= bonbons.longueur <= 100
  • 1 <= bonbons[i] <= 100
  • 1 <= extraCandies <= 50

Approcher

Comme indiqué dans la question, nous devons vérifier si chaque enfant peut avoir le plus grand nombre de bonbons, si un nombre quelconque de bonbons d’extraCandies est ajouté au nombre actuel de bonbons qu’un enfant a. La toute première étape consiste à savoir ce qui est le plus grand dans le tableau donné. Pour lequel trouver le maximum de bonbons parmi tous les enfants fonctionnera. Dans la deuxième itération, j’ajouterai les extraCandies au nombre actuel de bonbons pour chaque enfant et vérifierai s’il s’agit du plus grand nombre ou dépassant le plus grand nombre.

## Code

 public List<Boolean> kidsWithCandies(int[] bonbons, int extraCandies) {
        List<Boolean> res = new ArrayList();
        entier max = 0 ;
        for(int i:bonbons){
            max = Math.max(max,i);
        }
        
        for(int i:bonbons){
            if(i+extraCandies >= max){
                res.add(vrai);
            }autre{
                res.add(faux);
            }
        }
        retour res;
    }

Complexités

Complexité temporelle : 2*O(n) première itération pour trouver le meilleur bonbon. La deuxième itération consiste à déterminer si chaque enfant peut avoir autant ou plus que le meilleur bonbon. On peut négliger la constante, la complexité temporelle serait O(n).

Complexité spatiale : O(1).

Avatar

Subhash Kumar

En tant qu'ingénieur logiciel senior chez ServiceNow, vous avez de l'expérience dans le développement de bout en bout d'applications et de sites Web en utilisant diverses langues et technologies.

Voir aussi

Numéro unique