Heim  >  Artikel  >  Backend-Entwicklung  >  Minimale Differenz zwischen größtem und kleinstem Wert in drei Zügen

Minimale Differenz zwischen größtem und kleinstem Wert in drei Zügen

WBOY
WBOYOriginal
2024-07-18 22:44:211180Durchsuche

Minimum Difference Between Largest and Smallest Value in Three Moves

1509. Minimale Differenz zwischen größtem und kleinstem Wert in drei Zügen

Mittel

Sie erhalten ein ganzzahliges Array mit Zahlen.

In einem Zug können Sie ein Element von Zahlen auswählen und es in einen beliebigen Wert ändern.

Gib die minimale Differenz zwischen dem größten und kleinsten Wert von Nums zurück nach der Ausführung von höchstens drei Zügen.

Beispiel 1:

  • Eingabe: nums = [5,3,2,4]
  • Ausgabe: 0
  • Erklärung:Wir können höchstens 3 Züge machen.
  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.

Beispiel 2:

  • Eingabe: nums = [1,5,0,10,14]
  • Ausgabe: 1
  • Erklärung:Wir können höchstens 3 Züge machen.
  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.

Beispiel 3:

  • Eingabe: nums = [3,100,20]
  • Ausgabe: 0
  • Erklärung:Wir können höchstens 3 Züge machen.
  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.

Einschränkungen:

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

Lösung:

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);
    }
}

Kontaktlinks

  • LinkedIn
  • GitHub

Das obige ist der detaillierte Inhalt vonMinimale Differenz zwischen größtem und kleinstem Wert in drei Zügen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn