Java längste zusammenhängende Sequenz bestimmen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo kopox,

ganz einfach, Du hast das gegeben:

Ein Array mit Integer-Werten

Dann sind folgende Bedingungen gestellt:

1) Du sollst die längste Sequenz finden, die aus gleichen Werten besteht. Zum Beispiel bei: 11,33,43,44,44,44,42 wäre der Index 3 mit der Länge 3 (wäre die Zahl 44)

Außerdem muss folgende Bedingung gelten:

2) Eine Sequenz für 1) ist nur dann gültig, wenn die Zahlen vor der Sequenz und nach der Sequenz kleiner sind, als die Zahlen der Sequenz selbst:

11,33,43,44,44,44,42 wäre es die Sequenz mit 44 (Beispiel unter 1)

11,33,43, 43, 1, 45,44,44,44,42 hier wäre es die Sequenz mit 43 und nicht die Sequenz mit 44 (da 45 zu groß ist).

Im ersten Schritt schreib erstmal einen Algorithmus, der die längste Sequenz findet. Dann kannst Du dich darum kümmern den zweiten Schritt ebenfalls zu erledigen.

Gruß

kupox 
Fragesteller
 04.11.2018, 10:09

Hallo,

vielen Danke schonmal für die Hilfe :)
Mit erstes Problem ist schonmal, wie ich ein Integer-Array übergeben soll. Es soll ja denke ich in der Befehlszeile übergeben werden, aber ich weiß nur wie das mit einzelnen Werten funktioniert, nicht bei einem ganzen Array

0
AldoradoXYZ  04.11.2018, 10:14
@kupox

Hallo kupox,

nie gewundert, warum die main Methode ein String-Array als Parameter hat?

Das kannst Du benutzen.

Falls Du nicht weißt was ich meine, hier ein Beispiel:


public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        System.out.println(args[i]);
    }
}

Ansonsten lässt die Aufgabenstellung etwas offen was mit "übergeben" genau gemeint ist. Kann auch heißen, dass eine Methode mit entsprechendem Parameter gefordert ist.

Für "solche" Lernaufgaben würde ich das sogar bevorzugen. Die will man gar nicht von der Kommandozeile aufrufen.

Gruß

0

Vor drei Stunden wurde schon einmal eine ähnliche Frage gestellt, an der kannst du dich schon einmal orientieren.

https://www.gutefrage.net/frage/java-algorithmus-zum-herausfinden-der-laengsten-kette-von-zahlen

Wenn du das hast, kannst du diese Lösung entsprechend erweitern. Du wirst wohl einfach nur ein paar zusätzliche Vergleiche einfügen müssen, bevor du den gezählten Stand als derzeit größten sicherst.

(...) wobei die Werte der Elemente direkt vor und direkt nach dieser Sequenz kleiner sein sollen.

Dies wurde dir schon erklärt. Eine Sequenz wird nur gezählt, wenn vor und nach der Sequenz die Werte kleiner sind.

1 1 1 2 2 2 2 2 3 3 3 2 2 2  => 3 ist längste Sequenz
Ermitteln Sie für ein übergebenes Integer-Array (...)

Da von einem übergebenen Integer-Array die Rede ist, brauchst du eine Methode, die ein int-Array als Parameter definiert. Der Parameter args der main-Funktion würde diese Anforderung nicht erfüllen, da es sich da um String-Array handelt.

public static int getCountOfMaximumSequence(int[] sequence) {
  // count and return result ...
}

public static void main(String[] args) {
  int[] someNumbers = { 1, 1, 2, 2, 2, 2, 3, 3, 2, 2 };
  int countOfMaxSequence = getCountOfMaximumSequence(someNumbers);
  // ...
}

Ich stimme AldoradoXYZ zu, jedoch solltest du erstmal mit den Java Basics anfangen.. Dann solltest du das eig. können