suchen
HeimBackend-EntwicklungPHP-TutorialAnzahl der Möglichkeiten, das Array aufzuteilen

Number of Ways to Split Array

2270. Anzahl der Möglichkeiten, das Array aufzuteilen

Schwierigkeit:Mittel

Themen:Array, Präfixsumme

Sie erhalten ein 0-indiziertes ganzzahliges Array mit Zahlen der Länge n.

nums enthält eine gültige Aufteilung am Index i, wenn Folgendes zutrifft:

  • Die Summe der ersten i 1 Elemente ist größer oder gleichdie Summe der letzten n - i - 1 Elemente.
  • Es gibt mindestens ein Element rechts von i. Das heißt, 0

Gib die Anzahl der gültigen Teilungen in Zahlen zurück.

Beispiel 1:

  • Eingabe: nums = [10,4,-8,7]
  • Ausgabe: 2
  • Erklärung: Es gibt drei Möglichkeiten, Zahlen in zwei nicht leere Teile aufzuteilen:
    • Zahlen bei Index 0 aufteilen. Dann ist der erste Teil [10] und seine Summe ist 10. Der zweite Teil ist [4,-8,7] und seine Summe ist 3. Da 10 >= 3 , i = 0 ist eine gültige Aufteilung.
    • Zahlen bei Index 1 aufteilen. Dann ist der erste Teil [10,4] und seine Summe ist 14. Der zweite Teil ist [-8,7] und seine Summe ist -1. Da 14 >= -1 ist, ist i = 1 eine gültige Aufteilung.
    • Zahlen bei Index 2 aufteilen. Dann ist der erste Teil [10,4,-8] und seine Summe ist 6. Der zweite Teil ist [7] und seine Summe ist 7. Da 6
    • Die Anzahl der gültigen Teilungen in Zahlen beträgt also 2.

Beispiel 2:

  • Eingabe: nums = [2,3,1,0]
  • Ausgabe: 2
  • Erklärung: Es gibt zwei gültige Aufteilungen in Zahlen:
    • Zahlen bei Index 1 aufteilen. Dann ist der erste Teil [2,3] und seine Summe ist 5. Der zweite Teil ist [1,0] und seine Summe ist 1. Da 5 >= 1, i = 1 ist eine gültige Aufteilung.
    • Zahlen bei Index 2 aufteilen. Dann ist der erste Teil [2,3,1] und seine Summe ist 6. Der zweite Teil ist [0] und seine Summe ist 0. Da 6 >= 0, i = 2 ist eine gültige Aufteilung.

Einschränkungen:

  • 2 5
  • -105 5

Hinweis:

  1. Wie können wir für jeden Index i die Summe der ersten (i 1) Elemente aus der Summe der ersten i Elemente ermitteln?
  2. Wenn die Gesamtsumme des Arrays bekannt ist, wie können wir dann überprüfen, ob die Summe der ersten (i 1) Elemente größer oder gleich der Summe der übrigen Elemente ist?

Lösung:

Wir können es mit den folgenden Schritten angehen:

Ansatz:

  1. Präfixsumme: Zuerst berechnen wir die kumulative Summe des Arrays von links, was bei der Überprüfung der Summe der ersten i 1 Elemente hilft.
  2. Gesamtsumme: Berechnen Sie die Gesamtsumme des Arrays. Dies ist nützlich, um zu überprüfen, ob die Summe der verbleibenden Elemente kleiner oder gleich der Summe der ersten i 1 Elemente ist.
  3. Über das Array iterieren: Für jeden gültigen Index i (wobei 0
  4. Effizienz: Anstatt die Summen wiederholt neu zu berechnen, verwenden Sie für effiziente Vergleiche die Präfixsumme und die Gesamtsumme.

Lassen Sie uns diese Lösung in PHP implementieren: 2270. Anzahl der Möglichkeiten, das Array aufzuteilen

<?php /**
 * @param Integer[] $nums
 * @return Integer
 */
function waysToSplitArray($nums) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example usage:
$nums1 = [10, 4, -8, 7];
echo waysToSplitArray($nums1); // Output: 2

$nums2 = [2, 3, 1, 0];
echo waysToSplitArray($nums2); // Output: 2
?>

Erläuterung:

  1. $totalSum: Diese Variable speichert die Summe aller Elemente im Nums-Array.
  2. $prefixSum: Diese Variable verfolgt die kumulative Summe der Elemente von links (bis zum Index i).
  3. $remainingSum: Dies ist die Summe der verbleibenden Elemente vom Index i 1 bis zum Ende des Arrays. Es wird berechnet, indem $prefixSum von $totalSum subtrahiert wird.
  4. Valid Split Check: Für jeden Index i prüfen wir, ob die Präfixsumme größer oder gleich der verbleibenden Summe ist.

Zeitkomplexität:

  • O(n): Wir durchlaufen das Array einmal, um die Summe zu berechnen, und noch einmal, um nach gültigen Teilungen zu suchen. Daher ist die zeitliche Komplexität linear in Bezug auf die Länge des Arrays.

Raumkomplexität:

  • O(1): Wir verwenden nur wenige zusätzliche Variablen ($totalSum, $prefixSum, $remainingSum), daher ist die Raumkomplexität konstant.

Kontaktlinks

Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!

Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:

  • LinkedIn
  • GitHub

Das obige ist der detaillierte Inhalt vonAnzahl der Möglichkeiten, das Array aufzuteilen. 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
PHP -Leistungsstimmung für Websites mit hohem VerkehrPHP -Leistungsstimmung für Websites mit hohem VerkehrMay 14, 2025 am 12:13 AM

Thesecrettokeepingaphp-betriebene WebsiterunningSmoothyunderheavyLoadInvolvesseveralkeyStrategies: 1) ImplementoPCodeCachingWithopcachetoreducescholexexexcutiontime, 2) verwendetatabasequerycachingwithredolesendatabaSelaDaLoadaLoadaLoadaLoad, 3) LeveragecdnslikecloudLesendatabaselaSelaSelaSelaSelaSelaSelaSelaSelaSelaSeladinaSelaSelaSelaSelaSeladinaSelaSeladin

Abhängigkeitsinjektion in PHP: Code Beispiele für AnfängerAbhängigkeitsinjektion in PHP: Code Beispiele für AnfängerMay 14, 2025 am 12:08 AM

Sie sollten sich um die Abhängigkeitsinjektion (DI) kümmern, da Ihr Code klarer und leichter zu warten ist. 1) DI macht es modularer durch Entkopplung von Klassen, 2) verbessert die Bequemlichkeit von Tests und Code -Flexibilität, 3) DI -Container verwenden, um komplexe Abhängigkeiten zu verwalten, aber auf die Auswirkungen auf die Leistung und die kreisförmigen Abhängigkeiten zu achten, 4) Die beste Praxis besteht darin, sich auf abstrakte Schnittstellen zu verlassen, um lose Koupleln zu erreichen.

PHP -Leistung: Ist es möglich, die Anwendung zu optimieren?PHP -Leistung: Ist es möglich, die Anwendung zu optimieren?May 14, 2025 am 12:04 AM

Ja, optimizingaphpapplicationSispossiblandinential.1) ImplementCachingusedapcutoredatabaSeload.2) optimizedatabases-withindexing, effizienteQuerien und AnconnectionPooling.3) EnhanceCodewithbuilt-Infunktionen, Vermeidung von Globalvariablungen und UsusepcodeCodeCecess

PHP -Leistungsoptimierung: Der ultimative LeitfadenPHP -Leistungsoptimierung: Der ultimative LeitfadenMay 14, 2025 am 12:02 AM

TheKeyStrategieS significantBoostPhpapplicationPlicationperformanceare: 1) UseOpCodeCaching-likeopcachetoreduceExecutiontime, 2) optimizedatabaseInteractionswithprepararedStatements undProperIndexing, 3) configureWebserverSLIKENGINXWITHPHP-FPMFRMFRETBETTERPERSPRIGUNG, 4), 4), 4), 4), 4))

PHP -Abhängigkeitsinjektionsbehälter: Ein schneller StartPHP -Abhängigkeitsinjektionsbehälter: Ein schneller StartMay 13, 2025 am 12:11 AM

APHPDependencyInjectionContainerisatoolthatmanagesClass -Abhängigkeiten, EnhancingCodemodularität, Testbarkeit und Maschinenbarkeit.

Abhängigkeitsinjektion im Vergleich zum Service -Locator in PHPAbhängigkeitsinjektion im Vergleich zum Service -Locator in PHPMay 13, 2025 am 12:10 AM

Wählen Sie die Abhängigkeitsinjektion (DI) für große Anwendungen. Der Servicelocator ist für kleine Projekte oder Prototypen geeignet. 1) DI verbessert die Testbarkeit und Modularität des Codes durch Konstruktorinjektion. 2) Servicelocator erhält Dienstleistungen durch die Zentrumregistrierung, was bequem ist, aber zu einer Erhöhung der Codekupplung führen kann.

PHP -Leistungsoptimierungsstrategien.PHP -Leistungsoptimierungsstrategien.May 13, 2025 am 12:06 AM

PhpapplicationscanbeoptimizedforspeedandefficiencyBy: 1) EnabgingOpcacheinphp.ini, 2) usePreparedStatementsWithpdoFordatabasequeries, 3) Ersatzloopswitharray_Filterandarray_mapfordataprozessing, 4) Konfigurieren von), 4), implementieren, 5)

PHP -E -Mail -Validierung: Stellen Sie sicher, dass E -Mails korrekt gesendet werdenPHP -E -Mail -Validierung: Stellen Sie sicher, dass E -Mails korrekt gesendet werdenMay 13, 2025 am 12:06 AM

PhpemailvalidationInvolvesthreesteps: 1) Formatvalidationusing -RegularexpressionStocheckTheemailformat; 2) DnsvalidationToensurethedomainhasavalidmxRecord;

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!