Python :: Aufgabe #302
5 Lösungen
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ß
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:
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)
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) 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) 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)
suche = True
k = 1
arr = [-1, -2, -4]
arr.sort()
while suche:
if k in arr:
k = k + 1
else:
print(k)
suche = False
