1
resposta

Programa para obter a maior sequência consecutiva de números em ordem crescente e o seu tamanho!

Elabore um algoritmo que leia 50 números inteiros e obtenha a maior sequência consecutiva de números em ordem crescente e seu tamanho.

Não consegui nem começar este programa. Alguém poderia ajudar?

Entrada1:

[43, 27, 28, 40, 43, 23, 29, 47, 37, 2, 14, 14, 18, 4, 27, 36, 24, 31,42, 29]

Saída:

O maior tamanho = 4
A sequencia é  = [27, 28, 40, 43]

Entrada2:

[21, 37, 16, 16, 37, 20, 21, 3, 3, 10, 15, 40, 44, 40, 22, 0, 40, 26, 11,6]

Saída2:

O maior tamanho = 5
A sequencia é = [3, 10, 15, 40, 44]
1 resposta

Oii Eson, tudo bem?

Para resolver esse problema, podemos comparar se o número anterior é menor do que o número atual e caso seja, temos uma possibilidade de sequência. Ao final, teremos todas as possíveis sequências e para descobrir a maior, podemos utilizar a função max e passar como chave o tamanho (len) da lista. Veja na prática como fica em código:

def descobre_sequencia(numeros):
    resultado = [[numeros[0]]]

    for i in range(1, len(numeros)):
        if numeros[i-1] < numeros[i]:
            resultado[-1].append(numeros[i])
        else:
            resultado.append([numeros[i]])
    return resultado

def procura_maior_tamanho(lst):
    valor_da_lista = max(lst, key = lambda i: len(i))
    tamanho_da_lista = len(valor_da_lista)

    return valor_da_lista, tamanho_da_lista

lista_de_numeros = [43, 27, 28, 40, 43, 23, 29, 47, 37, 2, 14, 14, 18, 4, 27, 36, 24, 31,42, 29]
sequencias_crescente = descobre_sequencia(lista_de_numeros)
print(f"Todas as sequências = {sequencias_crescente}")
sequencia, maior_tamanho = procura_maior_tamanho(sequencias_crescente)
print(f"O maior tamanho = {maior_tamanho}")
print(f"A sequencia é  = {sequencia}")

Resultado:

Todas as sequências = [[43], [27, 28, 40, 43], [23, 29, 47], [37], [2, 14], [14, 18], [4, 27, 36], [24, 31, 42], [29]]
O maior tamanho = 4
A sequencia é  = [27, 28, 40, 43]

Com esse código, temos um pontapé inicial. Não é a única forma de resolver, é apenas uma das possíveis maneiras de se chegar a solução. Recomendo que você faça testes de mesa, use prints ao longo do código ou até mesmo use o recurso de depuração dentro de uma IDE para entender a fundo o que cada linha está fazendo.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!