1. Se dă o listă de numere naturale și un număr natural k. Să se elimine din listă subsecveța de
lungime k de sumă minimă (dacă sunt mai multe se va elimine prima = cea mai din stânga)
– fără a folosi liste suplimentare
2. Se dă un vector de numere naturale ordonat crescător (toate elementele sale se vor da pe o
linie separate prin spațiu). Să se elimine duplicatele din vector.
3. Se dă o listă de numere reale (toate elementele sale se vor da pe o linie separate prin spațiu).
Să se insereze câte un 0 după fiecare element negativ (fără a folosi liste suplimentare)
Ati putea sa îmi arătați cum sa rezolv problemele în Python?
Răspunsuri la întrebare
Răspuns:
### 1. ###
lista = [int(i) for i in input('Listă: ').split()]
k = int(input('k: '))
pozitie_min = suma_min = None
for i in range(len(lista) - k + 1):
suma_secventa = sum(lista[i:i + k])
if suma_min == None or suma_min > suma_secventa:
suma_min = suma_secventa
pozitie_min = i
lista[pozitie_min:pozitie_min + k] = []
print('Rezultat:', lista)
### 2. ###
lista = [int(i) for i in input('Listă: ').split()]
lista[:] = list(set(lista))
print('Rezultat: ', lista)
### 3. ###
lista = [int(i) for i in input('Listă: ').split()]
lista[:] = sum([[i, 0] if i < 0 else [i] for i in lista], [])
print('Rezultat: ', lista)
Explicație:
Prin asignare la indicele [:] nu se creează listă nouă. (Se poate verifica prin compararea id(lista) înainte şi după.)