Inhaltsverzeichnis
Weg, die Lösung zu finden
Brute Force
Beispiel
Ausgabe
Effiziente Methode
effizienten Methode
Erklärung des obigen Codes
Fazit
Heim Backend-Entwicklung C++ Ermitteln Sie in C++ die Anzahl der Subarrays, deren Summe kleiner als K ist

Ermitteln Sie in C++ die Anzahl der Subarrays, deren Summe kleiner als K ist

Sep 07, 2023 pm 03:25 PM
c编程 子数组 weniger als k

Ermitteln Sie in C++ die Anzahl der Subarrays, deren Summe kleiner als K ist

In diesem Beitrag ermitteln wir die Anzahl der Subarrays mit einer Summe kleiner als K unter Verwendung von C++. In diesem Problem haben wir ein Array arr[] und eine Ganzzahl K. Jetzt müssen wir die Subarrays finden, deren Summe kleiner als K ist. Unten ist das Beispiel –

Input : arr[] = {1, 11, 2, 3, 15}
K = 10
Output : 4
{1}, {2}, {3} and {2, 3}
Nach dem Login kopieren

Weg, die Lösung zu finden

Jetzt werden wir zwei verschiedene Methoden verwenden, um das gegebene Problem zu lösen –

Brute Force

Bei dieser Methode werden wir alle Unterarrays durchlaufen und ihre Summe berechnen und Wenn die Summe kleiner als k ist, vergleichen Sie mit k, um unsere Antwort zu erhöhen.

Beispiel

#include <bits/stdc++.h>
using namespace std;
int main(){
    int arr[] = {1, 11, 2, 3, 15}; // given array
    int k = 10; // given k
    int size = sizeof(arr) / sizeof(int); // size of our array.
    int ans = 0; // counter variable.
    for(int i = 0; i < size; i++){ // outer loop.
        int sum = 0;
        for(int j = i; j < size; j++){ // inner loop.
            sum = sum + arr[j];
            if(sum < k) // comparing with k.
               ans++; // incrementing our ans if sum is less than k.
        }
    }
    cout << ans << "\n";
    return 0;
}
Nach dem Login kopieren

Ausgabe

4
Nach dem Login kopieren
Nach dem Login kopieren

Diese Methode ist jedoch nicht sehr gut, da ihre zeitliche Komplexität sehr hoch ist O(N*N), wobei n die Größe des Arrays ist.

Wir suchen nach alternativen Lösungen mithilfe des Sliding-Window-Ansatzes (dies wird uns helfen, die zeitliche Komplexität des Programms zu reduzieren).

Effiziente Methode

Im Gegensatz zur Brute Force

effizienten Methode

strong> iterieren wir nicht durch alle Unterarrays. Stattdessen iterieren wir nur dann, wenn die Summe der Unterarrays k überschreitet, verschieben die linke Grenze zur rechten Grenze und wiederholen dies, bis das gesamte Array durchlaufen ist.

Beispiel

#include <bits/stdc++.h>
using namespace std;
int main(){
    int arr[] = {1, 11, 2, 3, 15}; // given array
    int k = 10; // given k
    int size = sizeof(arr) / sizeof(int); // size of our array.
    int ans = 0; // counter variable.
    int start = 0; // left border.
    int end = 0; // right border.
    int sum = 0;
    while(end < size && start < size){ // till the whole array is traversed.
        while(sum >= k && start < end){
           sum = sum - arr[start];
           start++;
        }
        if(end >= start)
           ans = ans + end - start;
        sum += arr[end];
        end++;
    }
    cout << ans << "\n";
    return 0;
}
Nach dem Login kopieren

Ausgabe

4
Nach dem Login kopieren
Nach dem Login kopieren

Wir verwenden die Sliding-Window-Technik, um unser Programm bei größeren Einschränkungen schneller oder effizienter zu machen.

Erklärung des obigen Codes

Bei diesem Ansatz iterieren wir normalerweise, bis unsere Summe kleiner als k ist, und erhöhen unsere Antwort darauf basierend. Dies ist die entscheidende Änderung im Code, die auftritt, wenn die Summe größer oder gleich k ist . In diesem Fall beginnen wir mit der Erhöhung unserer linken Grenze, bis sie kleiner oder gleich k ist oder die Summe größer oder gleich k ist. Während unsere Verarbeitung weiter voranschreitet, iteriert sie durch andere mögliche Unterarrays, die möglicherweise gebildet werden. Die Summe dieser neuen Unterarrays, die kleiner als k sind, wird zu unserer Antwort addiert, sodass unsere Antwort inkrementiert wird.

Im Vergleich zur vorherigen Brute-Force-Lösung ist diese Methode sehr effizient, da ihre Zeitkomplexität O(N) beträgt, wobei N die Größe unseres Arrays ist.

Fazit

In diesem Artikel haben wir das Problem gelöst, die Anzahl der Subarrays zu ermitteln, deren Summe kleiner als k ist, indem wir die Schiebefenstertechnik verwenden. Wir haben auch ein C++-Programm für dieses Problem und unseren vollständigen Lösungsansatz (sowohl trivial als auch effizient) gelernt. Wir können das gleiche Programm in anderen Sprachen wie C, Java, Python und anderen schreiben. Ich hoffe, Sie finden diesen Artikel hilfreich.

Das obige ist der detaillierte Inhalt vonErmitteln Sie in C++ die Anzahl der Subarrays, deren Summe kleiner als K ist. 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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
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)

Verwenden Sie C++, um Code zu schreiben, um die N-te nichtquadratische Zahl zu finden Verwenden Sie C++, um Code zu schreiben, um die N-te nichtquadratische Zahl zu finden Aug 30, 2023 pm 10:41 PM

Wir alle kennen Zahlen, die nicht das Quadrat einer Zahl sind, wie zum Beispiel 2, 3, 5, 7, 8 usw. Es gibt N nichtquadratische Zahlen und es ist unmöglich, jede Zahl zu kennen. In diesem Artikel erklären wir alles über quadratlose oder nichtquadratische Zahlen und Möglichkeiten, die N-te nichtquadratische Zahl in C++ zu finden. N-te nichtquadratische Zahl Wenn eine Zahl das Quadrat einer ganzen Zahl ist, wird die Zahl als perfektes Quadrat bezeichnet. Einige Beispiele für perfekte Quadratzahlen sind -1isquadratvon14isquadratvon29isquadratvon316isquadratvon425isquadratvon5. Wenn eine Zahl nicht das Quadrat einer ganzen Zahl ist, wird die Zahl als nichtquadratisch bezeichnet. Die ersten 15 nichtquadratischen Zahlen sind beispielsweise -2,3,5,6,

Inversionsalgorithmus für die Rechtsdrehung eines Arrays, geschrieben in C++ Inversionsalgorithmus für die Rechtsdrehung eines Arrays, geschrieben in C++ Sep 08, 2023 pm 08:17 PM

In diesem Artikel lernen wir den Umkehralgorithmus kennen, um das gegebene Array um k Elemente nach rechts zu drehen, zum Beispiel −Input:arr[]={4,6,2,6,43,7,3,7}, k= 4Ausgabe:{43,7,3,7,4,6,2,6}Erklärung:Das Drehen jedes Elements des Arrays um 4 Elemente nach rechts ergibt {43,7,3,7,4,6,2,6}.Eingabe:arr[]= {8 ,5,8,2,1,4,9,3},k=3Ausgabe:{4,9,3,8,5,8,2,1} Finden Sie die Lösung

Ermitteln Sie in der C-Programmierung die Fläche eines Kreises Ermitteln Sie in der C-Programmierung die Fläche eines Kreises Aug 25, 2023 pm 10:57 PM

Ein Kreis ist eine geschlossene Figur. Alle Punkte auf einem Kreis haben den gleichen Abstand von einem Punkt innerhalb des Kreises. Der Mittelpunkt wird Kreismittelpunkt genannt. Der Abstand von einem Punkt zum Mittelpunkt eines Kreises wird Radius genannt. Die Fläche ist eine quantitative Darstellung der Dimensionsspanne einer geschlossenen Figur. Die Fläche eines Kreises ist die Fläche, die innerhalb der Abmessungen des Kreises eingeschlossen ist. Die Formel zur Berechnung der Fläche eines Kreises lautet Fläche=π*r*r. Um die Fläche zu berechnen, geben wir den Radius des Kreises als Eingabe ein. Wir verwenden die Formel zur Berechnung der Fläche, Algorithmus SCHRITT 1: Übernehmen Sie den Radius als Eingabe vom Benutzer mit stdin. SCHRITT 2 : Berechnen Sie die Fläche des Kreises mit Fläche=(

Ermitteln Sie in Java die maximale Subarray-Summe von Subarrays, nachdem Sie ein Array basierend auf einer bestimmten Abfrage in Subarrays aufgeteilt haben Ermitteln Sie in Java die maximale Subarray-Summe von Subarrays, nachdem Sie ein Array basierend auf einer bestimmten Abfrage in Subarrays aufgeteilt haben Aug 29, 2023 am 11:21 AM

Wir haben zwei Arrays von Ganzzahlen, eines mit den berechneten Elementen und das andere mit den Teilungspunkten, die zum Teilen des Arrays zur Generierung von Teilmengen erforderlich sind. Wir müssen die Summe jeder Teilmenge in jeder Teilung berechnen und die maximale Teilmenge zurückgeben. Gehen wir das Beispiel durch Verstehen: - Eingabe −intarr[]=intarr[]={9,4,5,6,7}intsplitPoints[]={0,2,3,1} Ausgabe−die maximale Subarray-Summe nach jeder Teilung [ 22, 13,9,9] Erläuterung − Hier zerlegen wir das Array nach seinen Teilungspunkten und erhalten die maximale Teilmenge nach jeder Teilung und nach der ersten Teilung → {9} und {4,5,6,7 }>>Die maximale Summe der Subarrays beträgt nach der zweiten Aufteilung -22→{9},{4

Ermitteln Sie mit C++ die Anzahl eindeutiger Paare in einem Array Ermitteln Sie mit C++ die Anzahl eindeutiger Paare in einem Array Sep 07, 2023 am 11:53 AM

Wir benötigen entsprechende Kenntnisse, um mehrere eindeutige Paare in der Array-Syntax von C++ zu erstellen. Während wir die Anzahl der eindeutigen Paare ermitteln, zählen wir alle eindeutigen Paare im angegebenen Array, d. h. alle möglichen Paare können gebildet werden, wobei jedes Paar eindeutig sein sollte. Zum Beispiel -Input:array[]={5,5,9}Output:4Erläuterung:Die Anzahl dereinzigartigen Paaresind(5,5),(5,9),(9,5)und(9,9).Input:array[] = {5,4,3,2,2}Ausgabe: 16 Möglichkeiten, eine Lösung zu finden Es gibt zwei Möglichkeiten, dieses Problem zu lösen: −

Schreiben Sie mit C++ einen Code, um die Anzahl der Subarrays mit denselben Mindest- und Höchstwerten zu ermitteln Schreiben Sie mit C++ einen Code, um die Anzahl der Subarrays mit denselben Mindest- und Höchstwerten zu ermitteln Aug 25, 2023 pm 11:33 PM

In diesem Artikel werden wir C++ verwenden, um das Problem zu lösen, die Anzahl der Subarrays zu ermitteln, deren Maximal- und Minimalwert gleich sind. Das Folgende ist ein Beispiel für das Problem: −Input:array={2,3,6,6,2,4,4,4}Output:12Explanation:{2},{3},{6},{6}, {2 },{4},{4},{4},{6,6},{4,4},{4,4}und {4,4,4}sind die Teilarrays, die mit dem gleichen maximalen und minimalen Element gebildet werden können. Eingabe: array={3, 3, 1,5,

Ermitteln Sie in C++ die Anzahl der reflexiven Beziehungen auf einer Menge Ermitteln Sie in C++ die Anzahl der reflexiven Beziehungen auf einer Menge Aug 26, 2023 pm 08:17 PM

In diesem Artikel erklären wir Möglichkeiten, reflexive Beziehungen auf einer Menge zu finden. In diesem Problem erhalten wir eine Zahl n und eine Menge von n natürlichen Zahlen und müssen die Anzahl der reflexiven Beziehungen bestimmen. Reflexive Relation – Eine Relation R heißt eine reflexive Relation auf der Menge A, wenn für jedes „a“ in der Menge A (a, a) zur Relation R gehört. Zum Beispiel -Input:x=1Output:1Explanation:set={1},reflexiverelationsonA*A:{{1}}Input:x=2Output:4Explanation:set={1,2},reflexiverelationsonA*

Kehren Sie die Gruppierung doppelt verknüpfter Listen nach gegebener Größe mit C++ um Kehren Sie die Gruppierung doppelt verknüpfter Listen nach gegebener Größe mit C++ um Sep 04, 2023 am 09:49 AM

In diesem Problem erhalten wir einen Zeiger auf den Kopf der verknüpften Liste und eine ganze Zahl k. In einer Gruppe der Größe k müssen wir die verknüpfte Liste umkehren. Zum Beispiel -Input:1<->2<->3<->4<->5(doublylinkedlist),k=3Output:3<->2<->1<->5<->4 sucht nach Lösungen Methode In diesem Problem werden wir einen rekursiven Algorithmus formulieren, um dieses Problem zu lösen. Bei dieser Methode verwenden wir die Rekursion und lösen das Problem mithilfe der Rekursion. Beispiel#include<iostream&

See all articles