js implementa la eliminación de duplicados en matrices ordenadas

Implementación de JavaScriptjs para eliminar duplicados en una matriz ordenada.

Título original: dada una matriz de números en orden ascendente, elimine los elementos repetidos en su lugar para que cada elemento aparezca solo una vez y devuelva la nueva longitud de la matriz eliminada. El orden relativo de los elementos debe ser coherente. Dado que la longitud de la matriz no se puede cambiar en algunos idiomas, el resultado debe colocarse en la primera parte de la matriz nums. Más canónicamente, si hay k elementos después de eliminar los duplicados, entonces los primeros k elementos de nums deberían contener el resultado final. Devuelve k después de insertar el resultado final en las primeras k posiciones de nums. En lugar de usar espacio adicional, debe modificar la matriz de entrada en el lugar y hacerlo usando O (1) espacio adicional.
Autor: LeetCode
Enlace: https://leetcode.cn/leetbook/read/top-interview-questions-easy/x2gy9m/
Fuente: LeetCode

Esta pregunta adopta el método de punteros dobles , define un primer puntero a la izquierda y comienza a recorrer la matriz desde la izquierda más 1 elemento. Al atravesar, i es equivalente al puntero derecho . Si nums[left]!=nums[i], usted puede dar a la izquierda Agregar 1 y asignar el elemento de la matriz en la posición i a la posición más 1 a la izquierda. Si nums[left]==nums[i], omita este ciclo y i continúa moviéndose hacia la derecha.
Es decir, cuando hay un puntero izquierdo, partirá del primer elemento de atrás y lo comparará uno por uno con el delantero , hasta encontrar un elemento diferente al elemento apuntado por el puntero izquierdo, mueve el puntero izquierdo. a la derecha, y asigna el valor del elemento encontrado a la izquierda en este momento la ubicación indicada.
Después de reorganizar la matriz, debemos cortar la posición izquierda + 1 y los elementos de la matriz detrás de ella, y luego devolver la longitud de la matriz.

具体代码如下:
/**
 * @param {number[]} nums
 * @return {number}
 */
 // 双指针法
var removeDuplicates = function(nums) {
    
    
    if(nums.length==0){
    
    
        return;
    }
    // 定义一个左指针
    var left = 0;
    // 循环遍历数组
    for(var i = left+1;i<nums.length;i++){
    
    
        if(nums[left]!==nums[i]){
    
    
            left=left+1;
            nums[left]=nums[i];
        }
       continue;
    }
    nums.splice(left+1,nums.length-1);
    return nums.length;
};

Supongo que te gusta

Origin blog.csdn.net/weixin_52797317/article/details/128731428
Recomendado
Clasificación