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
Dada una matriz nums
, escriba una función para 0
mover 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
- 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;
- Simplemente continúe y use el
filter
método para filtrar los elementos de matriz distintos de cero para obtenerarrNo
; - Haga circular la matriz, asigne el elemento menor que el subíndice de
arrNo
longitud como elarrNo
elemento correspondiente, y el resto son 0.
Método dos
- Extender
sort
métodos ; - Todos sabemos que el
sort
método puede ordenar la matriz de acuerdo con un método determinado; - 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