Trouxe aqui algumas resoluções de algoritmos requisitados em entrevistas. Foi programado da forma mais reduzida e eficiente possível usando python 3.
Maior número ímpar de uma lista
Algoritmo que retorna o maior número ímpar de uma lista.
# %%
from functools import reduce
data0 = [1,2,3,4,5,6,7,8,19,10,11,21,24,12,14,15,22]
def biggestOdd(array):
return reduce(lambda x, y: x if x > y else y, filter(lambda x: x & 1, array))
print("Problem 1 - " + str(biggestOdd(data0)))
Inverte a frase
Algoritmo que inverte a frase de entrada, esse algoritmo retorna a frase invertida.
def inversePhrase(phrase):
return " ".join(phrase.split(" ")[::-1])
print("Problem 2 - " + str(inversePhrase("A frase inteira deve ser revertida")))
Maior soma de sequência contínua
O algoritmo retorna a maior soma de uma sequência contínua.
# %%
def continousSequenceBiggestSum(array):
max_sum = 0
for i in range(len(array)):
for j in range(i, len(array)):
if sum(array[i:j+1]) > max_sum:
max_sum = sum(array[i:j+1])
return max_sum
print("Problem 3 - " + str(continousSequenceBiggestSum(data)))
data2 = [6, -4, -2, 1, -3, 5, -1, 2, 1, 1, -5, 4]
print("Problem 3 - " + str(continousSequenceBiggestSum(data2)))
Maior soma de sequência contínua otimizada
Esse algoritmo também retorna a maior soma de uma sequência contínua, porém é mais reduzido o código.
# %%
def continousSequenceBiggestSum2(array):
[sum(array[idx:i+1]) for idx, itm in enumerate(array) for i, j in enumerate(array)]
data = [-1, 5, 2, 1, 4, -7, 8, -3, -4, 2]
print(continousSequenceBiggestSum2(data))
Espero que isso te auxilie de alguma forma. Eu pretendo criar conteúdos relevantes de algoritmos em português.
Se você sentiu falta de algo nesse tutorial, por favor comenta pra que eu possa aperfeiçoar meu trabalho.