初级算法-数组章节-删除排序数组中的重复项

192 阅读1分钟

初级算法(第一题)

哈喽大家好我会不定期更新一些算法题,都是leetCode上面的算法题,我也是一道一道做然后会将详细的解法附上,有不对的地方欢迎指正,我只会附上js的解法,其他的解法大家可以按照js思路去自行编码,大家可以搭配leetCode来看

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    //首先拿到nums的长度
    const n = nums.length;
    //判断n是否等于0如果等于0就直接返回
    if(n === 0){
        return n;
    }
    //定义一个左指针
    let left = 1;
    //循环数组定义一个右指针每次都让右指针和左边的作比较
    //如果右指针不等于左边的数值就把右指针的书数值给左指针
    //然后左指针加1
    //最后返回左指针会输出整理后的数组
    for(let right = 1;right<n;right++){
        if(nums[right]!==nums[right-1]){
            nums[left] = nums[right];
            ++left;
        }
    }
    //最后返回左指针
    return left;
}