Inhaltsverzeichnis
Beispiel Beispiel
Erklärung
Ansatz
Beispiel
Ausgabe
Fazit
Heim Backend-Entwicklung C++ Maximieren Sie die Anzahl der Nullen, die in einem bestimmten binären Array umgedreht werden sollen, sodass zwischen zwei Einsen mindestens K Nullen liegen

Maximieren Sie die Anzahl der Nullen, die in einem bestimmten binären Array umgedreht werden sollen, sodass zwischen zwei Einsen mindestens K Nullen liegen

Aug 26, 2023 pm 07:49 PM
二进制数组 最大化翻转数量 与之间

Maximieren Sie die Anzahl der Nullen, die in einem bestimmten binären Array umgedreht werden sollen, sodass zwischen zwei Einsen mindestens K Nullen liegen

Binäres Array ist ein spezieller Array-Typ, der nur die Zahlen 0 und 1 enthält. In diesem Problem erhalten wir ein binäres Array und eine ganze Zahl K. Unsere Aufgabe besteht darin, die maximale Anzahl von Nullen zu berechnen, die in einem gegebenen binären Array in Einsen umgewandelt werden können, sodass zwischen zwei Einsen mindestens K Nullen liegen.

Beispiel Beispiel

Input 1: arr[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 },  K = 2
Nach dem Login kopieren
Output 1: yes
Nach dem Login kopieren
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Der 3. und 6. Index im obigen Array sind die einzigen gültigen Indizes und können umgedreht werden, um sicherzustellen, dass zwischen den beiden Einsen mindestens 2 Nullen liegen. Das resultierende Array ist also {1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0}

Input 2: arr[] = {0, 1, 0, 0, 0, 1}, k = 1
Nach dem Login kopieren
Output 2: 1
Nach dem Login kopieren
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Der 3. Index des obigen Arrays ist der einzige gültige umgedrehte Index.

Ansatz

Wir haben das oben gegebene Beispiel mit Array und Ganzzahl k gesehen, fahren wir mit der Methode −

fort

Die Idee dieser Methode besteht darin, die Anzahl aufeinanderfolgender Nullen zwischen zwei Einsen zu zählen und zu prüfen, ob es geeignet ist, einige Nullen zwischen ihnen in Einsen umzudrehen. Angenommen, zwischen zwei Einsen liegen X Nullen. Laut Beobachtung beträgt die Anzahl der Nullen, die umgedreht werden können, (X-K) / (K+1). Gehen Sie also das Array durch und notieren Sie, wie viele aufeinanderfolgende Nullen zwischen jedem Paar von Einsen liegen. Addieren Sie dann die Anzahl der Nullen, die umgedreht werden können, zur Variablenanzahl, was die gewünschte Antwort darstellt.

Lassen Sie uns die folgende Methode Schritt für Schritt besprechen –

  • Zunächst erstellen wir eine Funktion namens „onesCount“, die das angegebene Array „arr“ und die Ganzzahl „K“ als Parameter verwendet und die erforderliche Ganzzahl „count“ als Rückgabewert zurückgibt.

  • Erstellen Sie die Variablen count und lastIdx.

  • Initialisieren Sie die Variablenanzahl mit 0, um die Anzahl der Füllnullen zu speichern.

  • Initialisieren Sie die Variable lastIdx mit (-(K+1)), um den letzten Index im Array mit dem Wert 1 zu speichern.

  • Verwenden Sie eine for-Schleife, um das Array zu durchlaufen, prüfen Sie, ob das aktuelle Element 1 ist, und überprüfen Sie dann, ob zwischen zwei aufeinanderfolgenden Einsen genügend Nullen vorhanden sind, um eine weitere 1 hinzuzufügen. Aktualisieren Sie abschließend den Indexwert der letzten 1.

  • Schreiben Sie eine Bedingung, die das letzte Segment von 0 im Array zählt, und fügen Sie es zur Variablenanzahl hinzu.

  • Schließlich wird unsere endgültige Antwortanzahl zurückgegeben.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

Unten finden Sie ein C++-Programm zur Berechnung der maximalen Konvertierung von Nullen in Einsen, um sicherzustellen, dass zwischen zwei Einsen mindestens k Nullen liegen.

#include <bits/stdc++.h>
using namespace std; 
// Function to find the count of the maximum number of 0s to be filliped 
int onesCount(int arr[], int n, int k){
   int count = 0; // Stores the count of 1's 
   int lastIdx = -(k + 1); // Stores the last index of value 1 
   
   // Traverse the array using for loop
   for (int i = 0; i < n; i++) { 
      // If the current element is 1
      if (arr[i] == 1) { 
      
         // Verify whether there are enough 0s between two consecutive 1s to add another 1 in between them.
         if (i - lastIdx - 1 >= 2 * (k - 1)) {
            count += (i - lastIdx - 1 - k) / (k + 1);
         } 
         lastIdx = i; // Update the last index of the value 1 of the array
      }
   } 
   
   // condition to include the last section of 0s in the array
   count += (n - lastIdx - 1) / (k + 1);
 
   // Return the answer
   return count;
} 
int main(){
   int arr[] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }; // given array
   int N = sizeof(arr) / sizeof(arr[0]); //getting size of an array
   int K = 2; //given integer 
   
   // Call the function
   int result = onesCount(arr, N, K);    
   cout<< "The count of Maximum filliped of 0's is "<< result ;
   return 0;
}
Nach dem Login kopieren

Ausgabe

The Count of Maximum filliped of 0's is 2
Nach dem Login kopieren

Zeitliche und räumliche Komplexität

Die zeitliche Komplexität des obigen Codes beträgt O(N), da wir nur das Array durchlaufen. wobei N die Größe des angegebenen Arrays ist.

Die Speicherplatzkomplexität des obigen Codes beträgt O(1), da wir keinen zusätzlichen Speicherplatz verwenden.

Fazit

In diesem Tutorial haben wir ein Programm implementiert, um die maximale Anzahl von Nullen zu ermitteln, die in einem bestimmten Binärarray umgedreht werden sollen, sodass zwischen zwei Einsen mindestens K Nullen liegen. Dieses Problem wird gelöst, indem die Anzahl aufeinanderfolgender Nullen zwischen zwei Einsen gezählt und geprüft wird, ob es sinnvoll ist, einige Nullen dazwischen umzudrehen. Die Zeitkomplexität ist O(N) und die Raumkomplexität ist O(1). wobei N die Größe der Zeichenfolge ist.

Das obige ist der detaillierte Inhalt vonMaximieren Sie die Anzahl der Nullen, die in einem bestimmten binären Array umgedreht werden sollen, sodass zwischen zwei Einsen mindestens K Nullen liegen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken Apr 04, 2025 am 11:18 AM

C Sprachdatenstruktur: Die Datenrepräsentation des Baumes und des Diagramms ist eine hierarchische Datenstruktur, die aus Knoten besteht. Jeder Knoten enthält ein Datenelement und einen Zeiger auf seine untergeordneten Knoten. Der binäre Baum ist eine besondere Art von Baum. Jeder Knoten hat höchstens zwei Kinderknoten. Die Daten repräsentieren structTreenode {intdata; structTreenode*links; structTreenode*rechts;}; Die Operation erstellt einen Baumtraversalbaum (Vorbereitung, in Ordnung und späterer Reihenfolge) Suchbauminsertion-Knoten Lösches Knotendiagramm ist eine Sammlung von Datenstrukturen, wobei Elemente Scheitelpunkte sind, und sie können durch Kanten mit richtigen oder ungerechten Daten miteinander verbunden werden, die Nachbarn darstellen.

Die Wahrheit hinter dem Problem der C -Sprachdatei Die Wahrheit hinter dem Problem der C -Sprachdatei Apr 04, 2025 am 11:24 AM

Die Wahrheit über Probleme mit der Dateibetrieb: Dateiöffnung fehlgeschlagen: unzureichende Berechtigungen, falsche Pfade und Datei besetzt. Das Schreiben von Daten fehlgeschlagen: Der Puffer ist voll, die Datei ist nicht beschreibbar und der Speicherplatz ist nicht ausreichend. Andere FAQs: Langsame Dateitraversal, falsche Textdateicodierung und Binärdatei -Leser -Fehler.

Wie verwende ich RValue -Referenzen effektiv in C? Wie verwende ich RValue -Referenzen effektiv in C? Mar 18, 2025 pm 03:29 PM

Artikel erörtert den effektiven Einsatz von RValue -Referenzen in C für Bewegungssemantik, perfekte Weiterleitung und Ressourcenmanagement, wobei Best Practices und Leistungsverbesserungen hervorgehoben werden. (159 Charaktere)

Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Was sind die grundlegenden Anforderungen für C -Sprachfunktionen? Apr 03, 2025 pm 10:06 PM

C -Sprachfunktionen sind die Grundlage für die Code -Modularisierung und das Programmaufbau. Sie bestehen aus Deklarationen (Funktionsüberschriften) und Definitionen (Funktionskörper). C Sprache verwendet standardmäßig Werte, um Parameter zu übergeben, aber externe Variablen können auch mit dem Adresspass geändert werden. Funktionen können oder haben keinen Rückgabewert, und der Rückgabewerttyp muss mit der Deklaration übereinstimmen. Die Benennung von Funktionen sollte klar und leicht zu verstehen sein und mit Kamel oder Unterstrich die Nomenklatur. Befolgen Sie das Prinzip der einzelnen Verantwortung und behalten Sie die Funktion ein, um die Wartbarkeit und die Lesbarkeit zu verbessern.

Wie verwende ich Bereiche in C 20 für ausdrucksstärkere Datenmanipulationen? Wie verwende ich Bereiche in C 20 für ausdrucksstärkere Datenmanipulationen? Mar 17, 2025 pm 12:58 PM

C 20 -Bereiche verbessern die Datenmanipulation mit Ausdruckskraft, Komposition und Effizienz. Sie vereinfachen komplexe Transformationen und integrieren sich in vorhandene Codebasen, um eine bessere Leistung und Wartbarkeit zu erhalten.

Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Apr 03, 2025 pm 10:33 PM

Die Berechnung von C35 ist im Wesentlichen kombinatorische Mathematik, die die Anzahl der aus 3 von 5 Elementen ausgewählten Kombinationen darstellt. Die Berechnungsformel lautet C53 = 5! / (3! * 2!), Was direkt durch Schleifen berechnet werden kann, um die Effizienz zu verbessern und Überlauf zu vermeiden. Darüber hinaus ist das Verständnis der Art von Kombinationen und Beherrschen effizienter Berechnungsmethoden von entscheidender Bedeutung, um viele Probleme in den Bereichen Wahrscheinlichkeitsstatistik, Kryptographie, Algorithmus -Design usw. zu lösen.

Wie verwende ich die Semantik in C, um die Leistung zu verbessern? Wie verwende ich die Semantik in C, um die Leistung zu verbessern? Mar 18, 2025 pm 03:27 PM

In dem Artikel wird die Verwendung von Move Semantics in C erörtert, um die Leistung zu verbessern, indem unnötiges Kopieren vermieden wird. Es umfasst die Implementierung von Bewegungskonstruktoren und Zuordnungsbetreibern unter Verwendung von STD :: MOVE

Wie funktioniert der dynamische Versand in C und wie wirkt sich dies auf die Leistung aus? Wie funktioniert der dynamische Versand in C und wie wirkt sich dies auf die Leistung aus? Mar 17, 2025 pm 01:08 PM

In dem Artikel wird der dynamische Versand in C, seine Leistungskosten und Optimierungsstrategien erörtert. Es unterstreicht Szenarien, in denen der dynamische Versand die Leistung beeinflusst, und vergleicht sie mit statischer Versand, wobei die Kompromisse zwischen Leistung und Betonung betont werden

See all articles