[TOC]

1. 删除有序数组中的重复项

https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

1.1. 输入

  • 升序排列 的数组
  • 原地 删除重复出现的元素
  • 每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致

1.2. 输出

  • 去除了重复项的数组
  • 数组的新长度

1.3. 示例

1.3.1. 示例1

输入:nums = [1,1,2]
输出:2, nums = [1,2,_]

1.3.2. 示例2

输入:nums = [0,0,1,1,1,2,2,3,3,4]
输出:5, nums = [0,1,2,3,4]

1.4. 方法

1.4.1. 方法1

思路

使用两个指针slow、fast分别记录,新数组当前位置,和旧数组当前位置。

出口:

fast >= array.length;

判断条件:

  • array[slow]<array[fast]时,

    nums[slow + 1] = nums[fast];

    slow++;

    fast++,

  • array[slow] == array[fast]时

    fast++;

代码

class Solution {
public:
    //正解1
    static int removeDuplicates(std::vector<int> nums) {
        int slow = 0;
        int fast = 0;

        while (fast < nums.size()) {
            if (nums[fast] != nums[slow]) {
                nums[slow + 1] = nums[fast];
                slow++;
            }

            fast++;
        }

        return slow + 1;
    }
}
Copyright © ershouche-FE 2019 all right reserved,powered by Gitbook文件修订时间: 2022-03-02 14:13:48

results matching ""

    No results matching ""