LeetCode-26. 删除有序数组中的重复项(JavaScript)

192 阅读1分钟

题目链接:leetcode-cn.com/problems/re…

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18804426f36a46f38d73dff2061923c2~tplv-k3u1fbpfcp-zoom-1.image

解法:

1、采用快慢指针的办法, slow 在后, fast 在前,往前走,去遍历整个数组

fast 遇到不重复的数字时, slow 往前走一位,然后将 fast 的值赋给 slow

快指针用来遍历整个数组,找到不相等的就告诉慢指针,让慢指针记下来

慢指针的作用就是来记录不相等的值,等快指针去通知它,喂,那谁谁,赶紧记一下

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    // 判断数组长度为0 或 1的情况
    if (nums.length <= 1) return nums.length
    // 快慢指针都从 0 开始
    let slow = 0,fast = 0
    while(fast < nums.length) {
    // 当快指针与慢指针不相等时,慢指针先往前进一位,然后快指针赋值给慢指针
        if(nums[fast] !== nums[slow]) {
            slow ++
            nums[slow] = nums[fast]
        }
	// 快指针遍历整个数组
        fast ++
    }
    // 因为 slow 是从 0 开始的,所以需要 + 1
    return slow + 1
};