[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;
}
}