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;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了