LeetCode 26 删除有序数组中的重复项

LeetCode 26 删除有序数组中的重复项

1. 题目地址

    https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150

2. 题解

    这道题由于要删除的是重复出现的元素,并且给定数组是单调递增的。那么我们可以发现一个规律:
        给定两个元素x和y,y在x的后一个位置。那么,y一定大于等于x。换句话说,后面的元素只能比前面的元素等或大,不可能小。
    所以,我们只需要去看后面的元素是否跟前一个元素相等即可。
    这道题采用的是快慢指针的思想。具体操作如下:
        1.  定义快慢指针low和fast。low指向第一个元素,而fast指向下一个元素。
        2.  在遍历的过程中:
            2.1 如果fast指向的元素跟low指向的元素不相等,那么arr[++low] = arr[fast]。fast++即可。
            2.2 如果fast指向的元素跟low指向的元素相等,那么fast++,low不变即可。
        3.  当fast走完之后,low + 1就是删除后数组元素个数。

3. 代码

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int low,fast;
        for(fast = 1,low = 0; fast < nums.size(); fast++){
            if(nums[fast] != nums[low]){
                nums[++low] = nums[fast];
            }
        }
        return low + 1;
    }
};
posted @   夏目^_^  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示