Die Weekly Challenge, organisiert von Mohammad S. Anwar, ist ein freundlicher Wettbewerb, bei dem Entwickler gegeneinander antreten, indem sie zwei Aufgaben lösen. Es fördert die Teilnahme von Entwicklern aller Sprachen und Niveaus durch Lernen, Teilen und Spaß haben.
Aufgabe 2: Nested Array von The Weekly Challenge 300 fordert Entwickler auf, die längste Länge des verschachtelten Arrays zu finden.
Einsendeschluss für die Weekly Challenge 300 ist Sonntag, der 23. Dezember 2024 um 23:59 Uhr (britische Zeit). Um Voreingenommenheit zu vermeiden, denken Sie bitte darüber nach, diesen Beitrag nach dem Wettbewerb zu lesen.
Sie erhalten ein Array von ganzen Zahlen, @ints der Länge n, das Permutationen der Zahlen im Bereich [0, n-1] enthält.
Schreiben Sie ein Skript, um eine Menge zu erstellen, set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ... unter Beachtung der folgenden Regeln:
- Das erste Element in set[i] beginnt mit der Auswahl der Elemente ints[i].
- Das nächste Element in set[i] sollte ints[ints[i]] sein, dann ints[ints[ints[i]]] und so weiter.
- Wir hören mit dem Hinzufügen auf, unmittelbar bevor ein doppeltes Element in set[i] auftritt.
Gibt die längste Länge einer Menge set[i] zurück.
The Weekly Challenge 300, Aufgabe 2: Nested Array
Beispiel 1 und Beispiel 2 zeigen die erwarteten Ausgaben für gegebene Eingaben.
Input: @ints = (5, 4, 0, 3, 1, 6, 2) Output: 4
Hier wird einer der längsten Sätze eingestellt[0]:
set[0] = {ints[0], ints[5], ints[6], ints[2]} = {5, 6, 2, 0}
Input: @ints = (0, 1, 2) Output: 1
def build_set_from_index(ints, starting_index): iset = [ ints[starting_index], ] for ints_index in range(1, len(ints)): pindex = iset[ints_index - 1] value = ints[pindex] if value in iset: break iset.append(value) return iset def return_longest_length(ints): max_length = 0 for i in range(0, len(ints)): iset = build_set_from_index(ints, i) iset_length = len(iset) if iset_length > max_length: max_length = iset_length return max_length
Meine Lösung nutzt zwei Funktionen: build_set_from_index und return_longest_length.
build_set_from_index gibt den Satz[Startindex] zurück, der aus den Parametern ints und Startindex erstellt wurde. Ich habe einen iterativen Ansatz verwendet, um set[] zu erstellen.
Mein Ansatz entstand aus einem frühen Morgen und einer anschließenden Paraphrasierung der festgelegten[] Konstruktionsregeln. Zunächst erschienen diese Regeln komplex. Aber nachdem ich Beispiel 1 nach einem anständigen Frühstück und Koffein noch einmal durchgesehen hatte, verstand ich diese Regeln besser. Ich konnte auch die folgende Paraphrase formulieren.
Mit dem paraphrasierten Ansatz wurde die interaktive Konstruktion von set[0] aus @ints, wie in Beispiel 1, noch einfacher!
return_longest_length ermittelt die maximale Länge aller aus Ints erstellten Mengen[]. Es verwendet build_set_from_index, um set[k] für jedes 0 <= k < len(ints) und identifiziert dann die Menge[k] mit der längsten Länge.
In diesem Beitrag habe ich Aufgabe 1: Nested Array besprochen und meine Lösung vorgestellt. Meine Lösung ist unkompliziert, beruht weitgehend auf der Art und Weise, wie ich die ursprüngliche Aufgabe umschrieben habe, und unterstreicht die Bedeutung eines guten Frühstücks.
Das obige ist der detaillierte Inhalt vonMeine Python-Sprachlösung für Task Nested Array aus The Weekly Challenge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!