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

WBOY
Freigeben: 2024-07-18 22:44:21
Original
1199 Leute haben es durchsucht

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.
Nach dem Login kopieren

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.
Nach dem Login kopieren

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.
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage