Les sujets abordés sont les suivants:
Il y a des
n
soldats debout dans une ligne. Chaque soldat reçoit une expérience uniquerating
valeur.Vous devez former une équipe de 3 soldats parmi eux selon les règles suivantes:
- Choisissez 3 soldats avec index (
i
,j
,k
) avec notation (rating[i]
,rating[j]
,rating[k]
).- Une équipe est valide si: (
rating[i] < rating[j] < rating[k]
) ou (rating[i] > rating[j] > rating[k]
) où (0 <= i < j < k < n
).Retourne le nombre d'équipes que vous pouvez former compte tenu des conditions. (Soldats peuvent faire partie de plusieurs équipes).
Exemple 1:
Entrée: note = [2,5,3,4,1] Sortie: 3 Explication: Nous pouvons former trois équipes compte tenu des conditions. (2,3,4), (5,4,1), (5,3,1).Exemple 2:
Entrée: note = [2,1,3] Sortie: 0 Explication: Nous ne pouvons pas former une équipe compte tenu des conditions.Exemple 3:
Entrée: Evaluation = [1,2,3,4] Rendement: 4Contraintes:
n == rating.length
1 <= n <= 200
1 <= rating[i] <= 10^5
idées de résolution de problèmes: Ce titre n'est pas difficile. En supposant que la note [i] au milieu de trois personnes, nous avons juste besoin de trouver chaque note [i] à gauche que le nombre de ses grandes et petites que les éléments, et sont note calculée [i] à droite que ses Japonais que lorsque le nombre de permutations peut être constitué d'un petit nombre d'éléments, un petit nombre de l'extrémité gauche du numéro à droite grand * + * grand nombre de petits gauche numéro de droite, à savoir Evaluation [i] au milieu des trois du total.
Code est la suivante:
classe Solution (objet): def numTeams (auto, évaluation): "" " : évaluation du type: Liste [int] : rtype: int """ res = 0 pour i dans plage (1, len (note) -1 ): left_small = 0 left_great = 0 pour j en série (i): si Evaluation [i]> note [j]: left_small + = 1 elif note [i] < note [j]: left_great+ = 1 right_small = 0 right_great = 0 pour j en série (i + 1 , len (étoiles)): si Evaluation [i]> Note [j]: right_small + = 1 elif Note [i] < Note [j]: right_great + = 1 res + = left_small * right_great res + = left_great * right_small # notation d'impression [i], left_small, left_great, right_small, right_great retour res