天天看点

LeetCode解题记录(26)——删除排序数组中的重复项题目说明解题方案

LeetCode解题记录——删除排序数组中的重复项

  • 题目说明
    • 测试样例
    • 题意理解
  • 解题方案

题目说明

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

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

测试样例

输入:[1,1,2]

输出:2

且要将数组修改成[1,2]。

题意理解

两个要求,要在找到非重复元素数的基础上将所有非重复元素按顺序排到数组前部。

解题方案

因为数组为升序,那么重复元素一定相邻,使用两个指针,一个指向当前元素,一个指向当前第一个非重复元素。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size() == 0)
            return 0;
        int ind = 0;//指使非重复元素
        for(int i = 1;i<nums.size();i++){
            if(nums[i]!=nums[ind])//如果出现不重复元素
                nums[++ind] = nums[i];//赋值
        }
        return ind+1;
    }
};
           
LeetCode解题记录(26)——删除排序数组中的重复项题目说明解题方案

所有代码都可以在我的github上找到:LeetCode