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:
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)
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)
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)
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)
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