删除有序数组中重复出现的元素

一起来看看这道题吧:

Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.


这是取自LeetCode的一道题,题目大意是给你一个有序的数组,其中有些元素是重复的,且最多出现两次,现在让你写一个函数,把这个数组里重复的那些元素删除一个,留下一个,并返回新的元素个数。

那么这道题就很简单了,因为数组已经是是有序的,我们只需要遍历一遍,将多余的元素删除掉就好了。

接下来就直接贴上函数部分的实现:

int remove(int *arr, int sz)
{
	int i = 0;
	int index = 0;

	for (i = 1; i < sz; i++) {
		if (arr[index] != arr[i]) {	//依次向后比较,若不相等,则用arr[i]覆盖arr[index+1],否则(遇到的是重复元素),i往后移
			arr[++index] = arr[i];	//当index与i之间没有其他元素,index + 1 就是i哦,相当于index后移,但是值没改变
		}				//当index与i之间有其他元素,那么这些元素必定是重复得了,直接覆盖掉
	}

	return index + 1;
}
要是还看不太明白的话,画个图看看吧 大笑




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fireplusplus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值