LeetCode 删除排序数组中的重复项

本文介绍了一种使用双指针技巧高效删除数组中重复元素的方法,适用于已排序数组,通过迭代比较并移动非重复元素,最终返回清理后数组的有效长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接 删除数组中的重复项

题目描述

删除数组中重复的项,把剩下的数字按顺序输出来,并且返回数组的长度。

解题思路

因为这道题给的数据是按照顺序的,简单一点的就是用双指针来做。指针i和指针j分别移动,i在原数组中,j在新的一个数组中,如果a[i]!=num[j],那么num[j+1]=a[i];j++;这里为了减少空间,干脆把新挑选出来的数据放到原数组中,因为i一定大于等于j,而且还可以直接传址返回,更加方便。

程序代码

class Solution {
public:    
	int removeDuplicates(vector<int>& nums) {        
		if(nums.size()==0) return 0;        
		int j=0;        
		for(int i=0;i<nums.size();++i)        
			if(nums[j]!=nums[i]) {j++;nums[j]=nums[i];}
		return j+1;
		/*我自己在程序中运行的时候不用写j+1,
		可能是返回后主程序的操作需要吧。*/
	}
};

如果不懂LeetCode上的代码提交形式,可以访问我的这篇博客 两数之和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值