Python :: Aufgabe #302

5 Lösungen Lösungen öffentlich

Kleinste positive Zahl in einem Array

Fortgeschrittener - Python von JKooP - 21.11.2020 um 11:42 Uhr
Gegeben sei ein (beliebig großes) unsortiertes Integer- Array welches sowohl aus positiven als auch negativen Zahlen besteht.
Ermittelt werden soll die erste fehlende positive Zahl im Array.

Beispiele:
arr = [1, 2, 0] sortiert: [0, 1, 2]
Lösung: 3

arr = [5, 4, -2, -1, 1] sortiert: [-2, -1, 1, 4, 5]
Lösung: 2

arr = [6, 7, 8, 9, 10]
Lösung: 1

arr = [-4, -2, -1]
Lösung: 1

arr = [1, 2, 3, 4, 2147483647, 8]
Lösung: 5

arr = []
Lösung: 1

Viel Spaß

Lösungen:

vote_ok
von Klaus (1780 Punkte) - 30.11.2020 um 13:32 Uhr
Quellcode ausblenden Python-Code
test_data = [
    [1, 2, 0],
    [5, 4, -2, -1, 1],
    [6, 7, 8, 9, 10],
    [-4, -2, -1],
    [1, 2, 3, 4, 2147483647, 8],
    []
]

def solution(array):
    print(f"arr = {array}")
    value=1
    while True:
        if value not in array:
            solution = value
            break
        value += 1
    print(f"Lösung: {solution}\n")

for element in test_data:
    solution(element)
vote_ok
von Leinart (90 Punkte) - 14.12.2020 um 21:28 Uhr
Quellcode ausblenden Python-Code
def smallestnumber(a):
    a.sort()
    c = doubleelemination(a)
    for i in c[:]:
        if i <= 0:
            c.remove(i)
    b=len(c)+1
    for i in range(b):
        if i == b-1:
            return i+1
        elif i+1 != c[i]:
            return i+1
        else:
            pass

def doubleelemination(a):
    for i in a[:]:
        b = a.count(i)
        while b >1:
            a.remove(i)
            b = b-1
    return a

if __name__ == "__main__":
    a= [] #Der Array welcher untersucht werden soll
    b=smallestnumber(a)
    print(b)    
vote_ok
von Leinart (90 Punkte) - 17.12.2020 um 22:31 Uhr
Quellcode ausblenden Python-Code
def smallestnumber(a):
    a.sort()
    c = doubleelemination(a)
    for i in c[:]:
        if i <= 0:
            c.remove(i)
    b=len(c)+1
    for i in range(b):
        if i == b-1:
            return i+1
        elif i+1 != c[i]:
            return i+1
        else:
            pass

def doubleelemination(a):
    for i in a[:]:
        b = a.count(i)
        while b >1:
            a.remove(i)
            b = b-1
    return a
if __name__ == "__main__":
    a= [-2,0,1,1,2,4] #Der zu durchsuchende Array
    b=smallestnumber(a)
    print(b)    
vote_ok
von satn1241 (2590 Punkte) - 10.01.2021 um 00:41 Uhr
Quellcode ausblenden Python-Code
arr = []    # hier den Array eingeben

new = []
arr = sorted(arr)

# Zahlen < 0  entfernen
for i in range(0,len(arr)):
    if (arr[i]) > 0:
        new.append(arr[i])

# Prüfe ob noch Zahlen übrig sind
try:
    [new[0]]
except:
    print(1)

# Einträge überprüfen
for i in range(0,len(new)):
    if new[i] != i+1:
        print(i+1)
        break
    elif new[len(new)-1]== i+1:
        print(i+2)
vote_ok
von vMaex (480 Punkte) - 30.01.2021 um 10:12 Uhr
Quellcode ausblenden Python-Code
suche = True
k = 1
arr = [-1, -2, -4]

arr.sort()

while suche:
    if k in arr:
        k = k + 1
    else:
        print(k)
        suche = False