Arrays, Elemente löschen

  • Themenstarter Themenstarter help11
  • Beginndatum Beginndatum
H

help11

Gast
Also ich beschreibe einfach mal wie die Aufgabe ist, es sollen möglichst schnell die ersten beiden Elemente eines Arrays ermittelt werden, welche nicht 0 sind, und kopiert in ein neues Array zurückgegeben werden.
 
1. Neues Array mit Platz für 2 Items erstellen

2. Mittels for über das Array drüber laufen

3 if Element != null -> kopieren.

Fertig.
 
Es ist noch komplizierter. Es gibt zwei Arrays a1 und a2. a1 enthält 3 oder 4 Elemente, a2 enthält 2 Elemente. Jetzt sollen so viele Elemente, die in a2 sind, aus a1 entfernt werden, bis a1 nur noch zwei Elemente enthält. Wenn a1 also vorher drei Elemente hatte, dann muss eins entfernt werden, sonst zwei. Es muss nicht immer ein neues Arrays zurückgegeben werden, dass alte darf auch bearbeitete werden. Falls a1 geschnitten mit a2 nicht genügen Elemente hat, die aus a1 entfernt werden können, damit a1.length == 2, dann soll einfach nur a1 \ a2 zurückgegeben werden.
Das alles soll möglichst unaufwändig sein.
 
Wo ist das Problem?:autsch:

Eine Potenzmenge zu berechnen ist ja nicht so schwer.

Hast du schon Code?
 
Zuletzt bearbeitet von einem Moderator:
neues array mit a2.size erstellen
neues array mit a2.size elemeten füllen
a1 durch neues array ersetzen
 
neues array mit a2.size erstellen
neues array mit a2.size elemeten füllen
a1 durch neues array ersetzen

Wie genau mache ich Zeile 2? Wie kann ich es (das neue Array) mit Elementen füllen, die nicht in a2 sind...

Was ist, wenn z.B. keine gleichen Elemente in a1 und a2 sind, dann ist es doch sinnvoller, kein neues Array zu erstellen, sondern a1 zurückzugeben.

Wie gesagt, dieser teil des Codes muss quasi "so schnell wie möglich sein" und das Array a1 darf auch direkt verändert werden.

Java:
public static int[] array1OhneArray2AberMitLaenge2(int[] array1, int[] array2) {
??

Wie würde das am schnellsten sein..

Ich bin mathematiker, kann also keine praktischen sachen, bitte helft mir.
 
Ich bin Informatiker und dennoch behersche ich die Grundlagen der Mathematik 😉:noe:

ein array kannst du mit

Java:
int[] einArray = new int[size];

erzeugen und mit

Java:
einArray[i]= 123

Elemente setzen.

Ich befürchte, dass hier keiner deine Hausaufgaben machen wird. Es sei den du bezahlst dafür. In dem Fall kannst du mir eine PM schicken 😉

Gru0,
Martin
 
Lösungsansatz hatte ich doch schon, Parameter und Rückgabe..

Kann ich keine Frage stellen, ohne Geld bezahlen zu müssen?

Java:
public static int[] array1OhneArray2AberMitLaenge2(int[] array1, int[] array2) {
   int[] res = new int[array1.length];
   int resInd = 0;
   for (int i = 0; i < array1.length; i++) {
      int j = 0;
      while (j < array2.length && array[i] != array[j]) {
         j++;
      }
      if (j == array2.length) {
         res[resInd++] = array1[i];
      }
   }
   return res;
}

So hätte ich das vielleicht notfalls gemacht, allerdings ist das doch viel zu aufwändig... Array erstellen, über Array iterieren, jedes mal alle Elemente durchgehen, Vergleichen usw.

Deshalb schneller bitte
 
Genau diese Methode soll optimiert werden! Sodass sie für Eingaben mit Länge 2 und 4 so schnell wie möglich ist. Ich weiß nicht, was es daran nicht zu verstehen gibt. Wenn du nicht helfen willst/kannst, dann kein Problem. Wäre halt nett, wenn man als langjähriges ehemaliges Mitglied auch mal etwas fragen dürfte.
 

Neue Themen


Zurück
Oben