Tabla de contenido
2. Determinar la cuerda palíndromo
4. Encuentra los valores máximo y mínimo
6. Encuentra los números que faltan
7. Determinar si dos cadenas son anagramas
8. Realice el aplanamiento de matrices
9. Implementar la compresión de cadenas
10. Determina si es un número continuo en una matriz desordenada
prefacio
Aunque el trabajo de desarrollo de front-end presta más atención al dominio de tecnologías como HTML, CSS y JavaScript, los algoritmos y las estructuras de datos también son una de las habilidades básicas que deben poseer los ingenieros de front-end. Las entrevistas de muchas empresas también incluirán algoritmos. Hoy resumo algunas de las preguntas de algoritmos más comunes para ti. ¡Comencemos con los algoritmos!
tema
1. Invertir una cadena
Requisitos del tema: escriba una función para invertir la cadena de entrada.
Ejemplo:
Ingrese: "¡Hola, mundo!"
Salida: "!dlroW ,olleH"
function reverseString(str) {
return str.split('').reverse().join('');
}
2. Determinar la cuerda palíndromo
Requisitos del tema: escriba una función para determinar si la cadena de entrada es una cadena palíndromo (tanto directa como inversa).
Ejemplo:
Nivel de entrada"
Salida: verdadero
function isPalindrome(str) {
const reversed = str.split('').reverse().join('');
return str === reversed;
}
3. Deduplicación de matriz
Requisitos del tema: escriba una función para eliminar elementos duplicados en la matriz de entrada.
Ejemplo: Entrada: [1, 2, 3, 3, 4, 4, 5]
Salida: [1, 2, 3, 4, 5]
function removeDuplicates(arr) {
return Array.from(new Set(arr));
}
4. Encuentra los valores máximo y mínimo
Requisitos del tema: escriba una función para encontrar los valores máximo y mínimo en la matriz de entrada.
Ejemplo:
Entrada: [3, 1, 9, 6, 2, 5]
Salida: el valor máximo es 9, el valor mínimo es 1
function findMinMax(arr) {
const min = Math.min(...arr);
const max = Math.max(...arr);
return { min, max };
}
5. Secuencia de Fibonacci
Requisitos del tema: escriba una función que ingrese un número n y devuelva el valor del n-ésimo número en la secuencia de Fibonacci.
Ejemplo:
Entrada: 6
Salida: 8 (la secuencia de Fibonacci es 0, 1, 1, 2, 3, 5, 8, ...)
function fibonacci(n) {
if (n <= 1) {
return n;
}
let a = 0;
let b = 1;
for (let i = 2; i <= n; i++) {
const temp = a + b;
a = b;
b = temp;
}
return b;
}
6. Encuentra los números que faltan
Requisitos del tema: dada una matriz desordenada de números enteros del 1 al n, uno de los cuales falta, escriba una función para encontrar el número que falta.
Ejemplo:
Entrada: [4, 2, 1, 6, 5]
Salida: 3
function findMissingNumber(arr) {
const n = arr.length + 1;
const totalSum = (n * (n + 1)) / 2;
const actualSum = arr.reduce((sum, num) => sum + num, 0);
return totalSum - actualSum;
}
7. Determinar si dos cadenas son anagramas
Requisitos del tema: dadas dos cadenas, determine si son anagramas (reorganizados a partir de las mismas letras).
Ejemplo:
Entrada: 'escuchar', 'silencio'
Salida: verdadero
function isAnagram(str1, str2) {
const sortedStr1 = str1.split('').sort().join('');
const sortedStr2 = str2.split('').sort().join('');
return sortedStr1 === sortedStr2;
}
8. Realice el aplanamiento de matrices
Requisitos del tema: escriba una función para aplanar una matriz multidimensional anidada en una matriz unidimensional. No se puede utilizar el método plano de matriz.
Ejemplo:
Entrada: [1, [2, [3, 4], 5], 6]
Salida: [1, 2, 3, 4, 5, 6]
function flattenArray(arr) {
return arr.reduce((result, current) => {
if (Array.isArray(current)) {
result.push(...flattenArray(current));
} else {
result.push(current);
}
return result;
}, []);
}
9. Implementar la compresión de cadenas
Requisitos del tema: Dada una cadena, escriba una función para comprimirla de modo que cuando el número de ocurrencias consecutivas del mismo carácter sea mayor o igual a 2, conecte el carácter y su número de ocurrencias.
Ejemplo:
Ingrese: "aabbbbbccdd"
Salida: "a2b4c2d2"
function compressString(str) {
let compressed = '';
let count = 1;
for (let i = 0; i < str.length; i++) {
if (str[i] === str[i + 1]) {
count++;
} else {
compressed += str[i] + count;
count = 1;
}
}
return compressed;
}
10. Determina si es un número continuo en una matriz desordenada
Requisitos del tema: dada una matriz de enteros desordenada, escribir una función para determinar si los elementos de la matriz pueden formar una secuencia continua de números.
Ejemplo:
Entrada: [5, 3, 2, 6, 4]
Salida: verdadero (los elementos 2, 3, 4, 5 y 6 en la matriz pueden formar una secuencia continua de números)
function isConsecutive(arr) {
const sortedArr = arr.sort((a, b) => a - b);
for (let i = 1; i < sortedArr.length; i++) {
if (sortedArr[i] !== sortedArr[i - 1] + 1) {
return false;
}
}
return true;
}
Resumir
Las preguntas de algoritmo no solo examinan la capacidad de programación y la capacidad de resolución de problemas del entrevistador, sino que también reflejan el dominio del entrevistador de los principios básicos de informática. Por lo tanto, cuando se prepare para la entrevista inicial, organice razonablemente el tiempo para aprender algoritmos y estructuras de datos, y mejore su capacidad practicando preguntas de algoritmos, lo que agregará más competitividad a la entrevista.