Différence minimale entre la valeur la plus grande et la plus petite en trois mouvements

WBOY
Libérer: 2024-07-18 22:44:21
original
1184 Les gens l'ont consulté

Minimum Difference Between Largest and Smallest Value in Three Moves

1509. Différence minimale entre la plus grande et la plus petite valeur en trois mouvements

Moyen

Vous recevez un tableau de nombres entiers.

En un seul mouvement, vous pouvez choisir un élément de nombres et le changer en n'importe quelle valeur.

Renvoyer la différence minimale entre la plus grande et la plus petite valeur de nombres après avoir effectué au plus trois mouvements.

Exemple 1 :

  • Entrée : nums = [5,3,2,4]
  • Sortie : 0
  • Explication : On peut faire au maximum 3 coups.
  In the first move, change 2 to 3. nums becomes [5,3,3,4].
  In the second move, change 4 to 3. nums becomes [5,3,3,3].
  In the third move, change 5 to 3. nums becomes [3,3,3,3].
  After performing 3 moves, the difference between the minimum and maximum is 3 - 3 = 0.
Copier après la connexion

Exemple 2 :

  • Entrée : nums = [1,5,0,10,14]
  • Sortie : 1
  • Explication : On peut faire au maximum 3 coups.
  In the first move, change 5 to 0. nums becomes [1,0,0,10,14].
  In the second move, change 10 to 0. nums becomes [1,0,0,0,14].
  In the third move, change 14 to 1. nums becomes [1,0,0,0,1].
  After performing 3 moves, the difference between the minimum and maximum is 1 - 0 = 1.
  It can be shown that there is no way to make the difference 0 in 3 moves.
Copier après la connexion

Exemple 3 :

  • Entrée : nums = [3,100,20]
  • Sortie : 0
  • Explication : On peut faire au maximum 3 coups.
  In the first move, change 100 to 7. nums becomes [3,7,20].
  In the second move, change 20 to 7. nums becomes [3,7,7].
  In the third move, change 3 to 7. nums becomes [7,7,7].
  After performing 3 moves, the difference between the minimum and maximum is 7 - 7 = 0.
Copier après la connexion

Contraintes :

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

Solution :

class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer
     */
    function minDifference($nums) {
        $n = count($nums);

        // If the array has 4 or fewer elements, the difference is zero because we can remove all but one element.
        if ($n <= 4) {
            return 0;
        }

        // Sort the array to facilitate the calculation of differences after removals.
        sort($nums);

        // We consider removing 0, 1, 2, or 3 elements from the start or the end.
        // Calculate the differences:
        // 1. Remove 3 from start: nums[n-1] - nums[3]
        // 2. Remove 2 from start, 1 from end: nums[n-2] - nums[2]
        // 3. Remove 1 from start, 2 from end: nums[n-3] - nums[1]
        // 4. Remove 3 from end: nums[n-4] - nums[0]
        $differences = [
            $nums[$n - 1] - $nums[3],
            $nums[$n - 2] - $nums[2],
            $nums[$n - 3] - $nums[1],
            $nums[$n - 4] - $nums[0]
        ];

        // Return the minimum difference.
        return min($differences);
    }
}
Copier après la connexion

Liens de contact

  • LinkedIn
  • GitHub

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!