Primeros pasos con el algoritmo LeetCode - Mover ceros

Llega oferta, cava amigos a recoger! Estoy participando en el evento de registro de reclutamiento de primavera de 2022, haga clic para ver los detalles del evento .

cero en movimiento

dirección del título original

Dada una matriz nums, escriba una función para 0mover al final de la matriz mientras mantiene el orden relativo de los elementos distintos de cero.

Tenga en cuenta que la matriz debe manipularse en el lugar sin copiar la matriz.

Ejemplo 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
复制代码

Ejemplo 2:

输入: nums = [0]
输出: [0]
复制代码

análisis de pensamiento

método uno

  1. La primera reacción al ver el título es filtrar los elementos distintos de cero en la matriz y luego agregar 0 según la longitud de la matriz;
  2. Simplemente continúe y use el filtermétodo para filtrar los elementos de matriz distintos de cero para obtener arrNo;
  3. Haga circular la matriz, asigne el elemento menor que el subíndice de arrNolongitud como el arrNoelemento correspondiente, y el resto son 0.

Método dos

  1. Extender sortmétodos ;
  2. Todos sabemos que el sortmétodo puede ordenar la matriz de acuerdo con un método determinado;
  3. Luego, la matriz también se puede ordenar de acuerdo con b. Si b es 0, devuelve -1, a está delante de b y b está detrás de a , por lo que 0 se puede colocar al final de la matriz.

código de CA

método uno

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    const arrNo = nums.filter(item => item)
    for(let i = 0; i < nums.length; i++) {
        if(i < arrNo.length) {
            nums[i] = arrNo[i]
        } else {
            nums[i] = 0
        }
    }
};
复制代码

resultado:

  • Resultado de la ejecución: aprobado
  • Tiempo de ejecución: 88 ms, superando al 71,67 % de los usuarios en todos los envíos de JavaScript
  • Consumo de memoria: 46 MB, supera al 11,80 % de los usuarios en todos los envíos de JavaScript
  • Casos de prueba superados: 74/74

Método dos

/**
 * @param {number[]} nums
 * @return {void} Do not return anything, modify nums in-place instead.
 */
var moveZeroes = function(nums) {
    nums.sort((a, b) => b ? 0 : -1)
};
复制代码

resultado:

  • Resultado de la ejecución: aprobado
  • Tiempo de ejecución: 80 ms, superó al 90,48 % de los usuarios en todos los envíos de JavaScript
  • Consumo de memoria: 45,2 MB, supera al 56,61 % de los usuarios en todos los envíos de JavaScript
  • Casos de prueba superados: 74/74

FINAL

Supongo que te gusta

Origin juejin.im/post/7079037299710754823
Recomendado
Clasificación