Python :: Aufgabe #343

2 Lösungen Lösungen öffentlich

Längste aufsteigende Zahlenfolge im Array

Anfänger - Python von JKooP - 16.04.2021 um 18:05 Uhr
Gegeben ist ein Array bestehend aus aufsteigenden Integer-Zahlenfolgen,
die hin und wieder durch nicht in die Folge passende Zahlen unterbrochen werden.
Ziel soll es sein, die längste aufsteigende Zahlenfolge zu ermittelt.

Beispiel 1:
arr = {1, 3, 5, 4, 7, 8, 9, 10, 6, 2, 3, 4}
Lösung: 5 => {4, 7, 8, 9, 10}

Beispiel 2:
arr = {5, 5, 5, 5, 5}
Lösung: 1 => {5}

Schreibe eine Methode/Funktion, die als Ergebnis die Länge der längsten Zahlenfolge ausgibt.

Viel Spaß

Lösungen:

vote_ok
von AlexGroeg (2010 Punkte) - 17.04.2021 um 18:35 Uhr
Quellcode ausblenden Python-Code

def ist_längste_aufsteigende_zahlenfolge(arr):    
    zahlenfolge = [arr[0]]
    z = []
    for i in range(1,len(arr)):
        if arr[i-1] == arr[i]-1:
            zahlenfolge.append(arr[i])
        else:
            if len(zahlenfolge) > 1:
                z.append(zahlenfolge.copy())
            zahlenfolge.clear()
            zahlenfolge.append(arr[i])
            
    z.append(zahlenfolge.copy())
    return max(z)


beispiele = [[1, 3, 5, 4, 7, 8, 9, 10, 6, 2, 3, 4], 
             [5, 5, 5, 5, 5]]

for arr in beispiele:
    print(ist_längste_aufsteigende_zahlenfolge(arr))

vote_ok
von eisheiliger (3750 Punkte) - 17.04.2021 um 19:01 Uhr
Quellcode ausblenden Python-Code

"""
#343: Längste aufsteigende Zahlenfolge im Array
Schreibe eine Methode/Funktion, die als Ergebnis die Länge der längsten Zahlenfolge ausgibt.
"""


def prf_lzafo(arr):
    c_ind = 0
    c_lae = 1
    x_ind = 0
    x_lae = 1

    for i in range(0, len(arr) - 1):
        if arr[i] < arr[i + 1]:
            c_lae += 1
        else:
            c_lae = 1
            c_ind = i + 1
        if c_lae > x_lae:
            x_lae = c_lae
            x_ind = c_ind
    print(x_lae, arr[x_ind: x_ind + x_lae])


def main():
    ein1 = [1, 3, 5, 4, 7, 8, 9, 10, 6, 2, 3, 4]
    ein2 = [5, 5, 5, 5, 5]
    ein3 = [1, 2, 3, 4, 5, 6, 4, 7, 8, 9, 10, 6, 2, 3, 4]
    ein4 = [4, 1, 2]
    prf_lzafo(ein1)
    prf_lzafo(ein2)
    prf_lzafo(ein3)
    prf_lzafo(ein4)


if __name__ == '__main__':
    main()


2108718

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.