Boa tarde preciso de ajuda com a atividade abaixo:
Dado um array de inteiros nums
classificados em ordem não decrescente , retorne um array dos quadrados de cada número classificados em ordem não decrescente .
Exemplo 1:
Entrada: nums = [-4,-1,0,3,10] Saída: [0,1,9,16,100] Explicação: Após o quadrado, a matriz se torna [16,1,0,9,100]. Após a classificação, torna-se [0,1,9,16,100].
Exemplo 2:
Entrada: nums = [-7,-3,2,3,11] Saída: [4,9,9,49,121]
Restrições:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
-
nums
é classificado em ordem não decrescente .
Acompanhamento: Elevar cada elemento ao quadrado e ordenar a nova matriz é muito trivial. Você conseguiria encontrar uma O(n)
solução usando uma abordagem diferente?
Segue o código em JS que desenvolvi o qual não consigo enxergar onde estou errando, será que alguém consegue dar uma olhadinha no código e ver onde está o erro?
function numerosAleatorios(numbers) {
const numero = numbers.length;
const resultado = new Array(numero);
let esquerda = 0;
let direita = numero - 1;
let posicao = numero - 1;
while (esquerda <= direita) {
const quadradoEsquerda = numbers[esquerda] ** 2;
const quadradoDireita = numbers[direita] ** 2;
if (quadradoEsquerda > quadradoDireita) {
resultado[posicao] = quadradoEsquerda;
esquerda++;
} else {
resultado[posicao] = quadradoDireita;
direita--;
}
posicao--;
}
return resultado;
}
const numbers1 = [-4, -1, 0, 3, 10];
const numbers2 = [-7, -3, 2, 3, 11];
console.log(sortedSquares(numbers1));
console.log(sortedSquares(numbers2));