Inhaltsverzeichnis
Lassen Sie es uns anhand eines Beispiels verstehen:-
Wir beginnen mit der Methode main()
Heim Java javaLernprogramm 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
子数组 数组分割 最大子数组和

Ermitteln Sie in Java die maximale Subarray-Summe von Subarrays, nachdem Sie ein Array basierend auf einer bestimmten Abfrage in Subarrays aufgeteilt haben

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

Lassen Sie es uns anhand eines Beispiels verstehen:-

Input− int arr[] = int arr[] = { 9, 4, 5, 6 , 7 } int splitPoints[] = { 0, 2, 3, 1 } ;

Ausgabe− Die maximale Sub-Array-Summe [22, 13, 9, 9] nach jeder Teilung Teilmengensumme

Nach der ersten Teilung → {9} und {4,5,6,7} >> Die maximale Subarray-Summe beträgt - 22

Nach der zweiten Teilung strong> → {9}, { 4,5 } und {6,7} >> Die maximale Subarray-Summe beträgt - 13

Nach der dritten Teilung →{ 9}, {4,5}, {6} und {7} >> Das maximale Subarray. Die Array-Summe beträgt - 9

Nach der vierten Teilung →{9}, {4}, {5}, {6 } und {7} >> Die maximale Subarray-Summe beträgt 9

Input−int arr[] = int arr[] = { 7, 8, 5, 9, 1 } int splitPoints[] = { 1, 2 , 0, 3 };

Ausgabe−Die maximale Subarray-Summe nach jeder Teilung [15, 115, 10, 9]

Erklärung−Hier zerlegen wir das Array entsprechend seinen Teilungspunkten und erhalten die maximale Teilmengensumme nach jeder Aufteilung

Nach der ersten Aufteilung → {7, 8} und {5,9,1} >> Die maximale Sub-Array-Summe beträgt 15

Nach der zweiten Aufteilung → {7,8}, {5} und {9,1} >> Die maximale Sub-Array-Summe beträgt 115

Nach der dritten Division →{7}, {8}, {5} und {9,1} >> Die maximale Sub-Array-Summe beträgt 115 -Array-Summe ist 10

Nach der vierten Division →{7}, {8}, {5}, {9} und {1} >> Die maximale Sub-Array-Summe beträgt 9

Die im Folgenden verwendete Methode Das Programm lautet wie folgt:

Wir beginnen mit der Methode main()

  • Geben Sie Arrays beliebiger Länge ein, z. B. arr[] und splitPoints[]. Ihre Längen werden berechnet und in der Form berechneSubsetSum(arr.length, splitPoints.length, splitPoints, arr) an die Methode übergeben.

    • Erstellen Sie in der Methode berechneSubsetSum()
  • ein ganzzahliges Array als sum[] und setzen Sie sum[0] auf arr[0].

    • Beginne eine FOR-Schleife von i nach 1 bis zur Länge des Arrays und setze sum[i] auf sum[i - 1] + arr[i] und setze temp[0] auf neue Teilmengen(0, n - 1, sum[n - 1]).

    • Fahren Sie mit dem Hinzufügen von t2.add(temp[0]) und t1.add(0) fort

    • Beginnen Sie mit der FOR-Schleife von i bis 0, bis die Länge des splitPoints-Arrays erreicht ist. Innerhalb der Schleife setze currentSplitPoint auf t1.floor(splitPoints[i]) und entferne von t2 auf t2.remove(temp[currentSplitPoint])

    • setze end auf temp[currentSplitPoint] .last und temp[currentSplitPoint] als neue Teilmengen (currentSplitPoint, splitPoints[i], sum[splitPoints[i]] - (currentSplitPoint == 0 ? 0 : sum[currentSplitPoint - 1]))

    • Verwenden Sie t2.add(temp[currentSplitPoint]) und temp[splitPoints [i] + 1] = new subSets(splitPoints[i] + 1, end, sum[end] - sum[splitPoints[i] add]])

    • use t2.add(temp[splitPoints [i] + 1]), t1.add(currentSplitPoint) und t1.add(splitPoints[i] + zum Addieren von 1)

    • Drucken Sie den t2.first()-Wert aus.

    • Erstellen Sie eine Klasse subSets und deklarieren Sie first, last und value als ihre Datenelemente und definieren Sie den Standardkonstruktor als subSets(int f, int l, int v) und setzen Sie first auf f, last Set auf l und value zu v
  • Erstellen Sie eine Klasse als UtilityComparator, die Comparator implementiert

  • Erstellen Sie eine öffentliche Methode als Vergleich und prüfen Sie, ob s2.value nicht gleich s1.value ist, und geben Sie dann s2 value - s1.value zurück.

    • Überprüfen Sie, ob s1.first nicht gleich s2.first ist, und geben Sie s2.first - s1.first zurück

      import java.io.IOException;
      import java.io.InputStream;
      import java.util.*;
      class utilityComparator implements Comparator<subSets>{
         public int compare(subSets s1, subSets s2){
            if(s2.value != s1.value){
               return s2.value - s1.value;
            }
            if(s1.first != s2.first){
               return s2.first - s1.first;
            }
            return 0;
         }
      }
      class subSets{
         int first;
         int last;
         int value;
         subSets(int f, int l, int v){
            first = f;
            last = l;
            value = v;
         }
      }
      public class testClass{
         static void calculateSubsetSum(int n, int k, int splitPoints[], int arr[]){
            int sum[] = new int[n];
            sum[0] = arr[0];
            for (int i = 1; i < n; i++){
               sum[i] = sum[i - 1] + arr[i];
            }
            TreeSet<Integer> t1 = new TreeSet<>();
            TreeSet<subSets> t2 = new TreeSet<>(new utilityComparator());
            subSets temp[] = new subSets[n];
            temp[0] = new subSets(0, n - 1, sum[n - 1]);
            t2.add(temp[0]);
            t1.add(0);
            System.out.println("Maximum subarray sum after each split");
            for (int i = 0; i < k; i++){
               int currentSplitPoint = t1.floor(splitPoints[i]);
               t2.remove(temp[currentSplitPoint]);
               int end = temp[currentSplitPoint].last;
               temp[currentSplitPoint] = new subSets(currentSplitPoint, splitPoints[i], sum[splitPoints[i]] - (currentSplitPoint == 0 ? 0 : sum[currentSplitPoint - 1]));
               t2.add(temp[currentSplitPoint]);
               temp[splitPoints[i] + 1] = new subSets(splitPoints[i] + 1, end, sum[end] -       sum[splitPoints[i]]);
               t2.add(temp[splitPoints[i] + 1]);
               t1.add(currentSplitPoint);
               t1.add(splitPoints[i] + 1);
               System.out.println(t2.first().value);
            }
         }
         public static void main(String[] args){
            int arr[] = { 2, 1, 6, 8, 5, 10, 21, 13};
            int splitPoints[] = { 3, 1, 2, 0, 4, 5 };
            calculateSubsetSum(arr.length, splitPoints.length, splitPoints, arr);
         }
      }
      Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonErmitteln Sie in Java die maximale Subarray-Summe von Subarrays, nachdem Sie ein Array basierend auf einer bestimmten Abfrage in Subarrays aufgeteilt haben. 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)

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

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 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

In diesem Beitrag werden wir C++ verwenden, um die Anzahl der Subarrays zu ermitteln, deren Summe kleiner als K ist. 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. Hier ist das Beispiel −Input:arr[]={1,11,2,3,15}K=10Output:4{1},{2},{3}and{2,3}, um die Lösung zu finden. Jetzt haben wir Zur Lösung des gegebenen Problems werden zwei verschiedene Ansätze verwendet: Brute Force. Bei diesem Ansatz durchlaufen wir alle Unterarrays und berechnen deren Summe. Wenn die Summe kleiner als k ist, vergleichen wir sie mit k, um unsere Antwort zu erhöhen. Beispiel#include<

Maximieren Sie in C++ die Anzahl der Subarrays mit null XOR Maximieren Sie in C++ die Anzahl der Subarrays mit null XOR Aug 28, 2023 pm 09:05 PM

Wir erhalten ein Array Arr[] mit ganzzahligen Werten. Das Ziel besteht darin, die maximale Anzahl von Subarrays zu finden, deren XOR 0 ist. Die Bits eines Subarrays können beliebig oft ausgetauscht werden. Hinweis: -1

Schreiben Sie mit C++ einen Code, um die Anzahl der Unterarrays mit ungeraden Summen zu ermitteln Schreiben Sie mit C++ einen Code, um die Anzahl der Unterarrays mit ungeraden Summen zu ermitteln Sep 21, 2023 am 08:45 AM

Ein Subarray ist ein zusammenhängender Teil eines Arrays. Betrachten wir beispielsweise ein Array [5,6,7,8], dann gibt es zehn nicht leere Unterarrays, wie zum Beispiel (5), (6), (7), (8), (5,6). (6, 7), (7,8), (5,6,7), (6,7,8) und (5,6,7,8). In diesem Leitfaden erklären wir alle möglichen Informationen in C++, um die Anzahl der Subarrays mit ungeraden Summen zu ermitteln. Um die Anzahl der Unterarrays ungerader Summen zu ermitteln, können wir verschiedene Methoden verwenden. Hier ist ein einfaches Beispiel: Input:array={9,8,7,6,5}Output:9Explanation:Sumofsubarray-{9}= 9{7

Das längste Subarray, dessen größter gemeinsamer Teiler größer als 1 ist Das längste Subarray, dessen größter gemeinsamer Teiler größer als 1 ist Sep 18, 2023 pm 10:17 PM

Ein Array ist eine Sammlung ähnlicher Daten, die zusammenhängend an benachbarten Speicherorten gespeichert sind. Durch die Definition des Offset-Werts als spezifischer Basiswert für die Datenbank ist es einfacher, die spezifische Position jedes Elements zu bewerten. Der Basiswert für diesen bestimmten Index ist Null und der Offsetwert ist die Differenz zwischen den beiden bestimmten Indizes. Ein Subarray ist Teil eines bestimmten Arrays und kann als eine Reihe von Variablen definiert werden, die mit mehreren Werten gekennzeichnet sind. Das längste Subarray bezieht sich auf ein Array, in dem alle Elemente im Array größer als K sind. Hier ist die Summe der maximalen Summe des Subarrays kleiner oder gleich dem angegebenen Datensatz im angegebenen Datensatz. Um die Länge des längsten Subarrays mit weniger als 1 in einem Datensatz zu ermitteln, müssen wir lediglich die Gesamtzahl der Einsen in einem bestimmten Subarray ermitteln. HINWEIS: Die Anzahl sollte größer als die Anzahl Null sein. Der größte gemeinsame Teiler ist ein mathematisches Phänomen, bei dem ich

So führen Sie PHP-Arrays zusammen und teilen sie auf So führen Sie PHP-Arrays zusammen und teilen sie auf Sep 05, 2023 am 08:47 AM

PHP-Array ist eine sehr häufig verwendete Datenstruktur, und die Zusammenführungs- und Aufteilungsoperationen von Arrays sind häufig in der Entwicklung enthalten. In diesem Artikel wird erläutert, wie Sie diese beiden Vorgänge mithilfe der PHP-Sprache implementieren und entsprechende Codebeispiele beifügen. 1. Arrays zusammenführen Der Vorgang des Zusammenführens von Arrays kann mit der Funktion array_merge() implementiert werden. Diese Funktion akzeptiert mehrere Arrays als Argumente und führt sie zu einem neuen Array zusammen. Codebeispiel: $array1=["apple","ba

In C++ geschrieben, ermitteln Sie die Anzahl der Primzahlen in einem Subarray In C++ geschrieben, ermitteln Sie die Anzahl der Primzahlen in einem Subarray Sep 01, 2023 am 08:37 AM

In diesem Artikel beschreiben wir eine Methode, um die Anzahl der Primzahlen in einem Subarray zu ermitteln. Wir haben ein Array positiver Zahlen arr[] und q-Abfragen mit zwei ganzen Zahlen, die unseren Bereich {l,R} darstellen, und wir müssen die Anzahl der Primzahlen im angegebenen Bereich ermitteln. Unten ist ein Beispiel für das gegebene Problem – Eingabe:arr[]={1,2,3,4,5,6},q=1,L=0,R=3Ausgabe:2Im angegebenen Bereich sind die Primzahlen{2,3}.Eingabe: arr []={2,3,5,8,12,11},q=1,L=0,R=5Ausgabe:4Im angegebenen Bereich sind die Primzahlen{2,3,5

See all articles