Top.Mail.Ru

Перечень алгоритмов

12. Поиск количества различных чисел среди элементов массива

Дан список:

a= [1,2,3,4,5,5,7,8,0,0]

 

Способ 1. Использование цикла for

k=0   # количество равных чисел
n= len(a)
for i in range(n):              
  
for j in range(i+1,n):      
      
if a[i]== a[j]:        
           k +=
1
          
break
print("Кол-во различных чисел:", n-k)

# Кол-во различных чисел: 8
Временная сложность: O (n*n)

 

Способ 2. Использование среза

count = 0
for i in range(len(a)):
  
if not a[i] in a[0:i]:
       count +=
1
print("Кол-во различных чисел:",count)

# Кол-во различных чисел: 8

Временная сложность: O (n)

Способ 3. Использование множества set()

count = len(set(a))
print("Кол-во различных чисел:",count)

# Кол-во различных чисел: 8
Временная сложность: O (1)

 

Способ 4. Использование цикла for в одном проходе. Требуется сортировка

a.sort()
count =
1
for i in range(1, len(a)):
   count += a[i -
1] != a[i]
print("Кол-во различных чисел:",count)

# Кол-во различных чисел: 8
Временная сложность: O(n log n)

 

Способ 5. Использование генератора. Требуется сортировка

a.sort()

count = len([a[0]] + [a[i] for i in range(1, len(a)) if a[i - 1] != a[i]])
print("Кол-во различных чисел:",count)

# Кол-во различных чисел: 8
Временная сложность: O(n)

 

Способ 6. Использование вспомогательного списка

b = []
for x in a:
  
if x not in b:
       b.append(x)
print("Кол-во различных чисел:",len(b))

# Кол-во различных чисел: 8
Временная сложность: O(n)