Informatică, întrebare adresată de alex032206, 8 ani în urmă

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 de VxF
1

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ă.)

Alte întrebări interesante