1
resposta

Método alternativo ao algoritmo usado em aula

Tentei resolver o problema proposto antes de ver a aula e desenvolvi um código alternativo utilizando o método .push() que adiciona os elementos passados sempre no fim do array, dessa forma não precisamos utilizar a variável atual para controlar o índice da listaFinal. O código acabou virando um híbrido do código da aula com o que eu tinha pensado, segue:

const { edGalho, edFolha } = require('./arrays');

function juntaListas(lista1, lista2) {
    let listaFinal = [];
    let posicaoAtualLista1 = 0;
    let posicaoAtualLista2 = 0;

    while (posicaoAtualLista1 < lista1.length && posicaoAtualLista2 < lista2.length) {
        if (lista1[posicaoAtualLista1].preco < lista2[posicaoAtualLista2].preco) {
            listaFinal.push(lista1[posicaoAtualLista1]);
            posicaoAtualLista1++;
        } else {
            listaFinal.push(lista2[posicaoAtualLista2]);
            posicaoAtualLista2++;
        }
    }

    while (posicaoAtualLista1 < lista1.length) {
        listaFinal.push(lista1[posicaoAtualLista1]);
        posicaoAtualLista1++;
    }

    while (posicaoAtualLista2 < lista2.length) {
        listaFinal.push(lista2[posicaoAtualLista2]);
        posicaoAtualLista2++;
    }

    return listaFinal
}

console.log(juntaListas(edFolha, edGalho));

Achei que seria interessante compartilhar.

1 resposta

Boa ideia!