首页 > 编程语言 >算法练习:两指针之有序数组去重

算法练习:两指针之有序数组去重

时间:2022-12-07 15:38:21浏览次数:40  
标签:cout int ++ 算法 数组 文章 指针 nArray


问题描述

给出一个有序数组,就地移除重复元素,保持每个元素只出现一次,并返回新数组的长度。

 

问题分析

这个比较简单,直接使用两个指针,一个在前,一个在后,扫描一遍数组即可。时间复杂度为O(n^2)。

比如数组A = { 1,1, 2, 3, 3 },看下图,思想简单明了。

 

算法练习:两指针之有序数组去重_数组

 

 

代码实现

#include <iostream>

using namespace std;


//去除数组中重复的数字,返回新数组的长度
int RemoveDuplicate( int nArray[], int nCount )
{
int i = 0;
int j = i + 1;
for( ; j < nCount; ++j )
{
//j在i的前面走
//如果两者值不同,则在i+1位置保存j位置的数值
if( nArray[i] != nArray[j] )
{
nArray[++i] = nArray[j];
}
}

return i + 1;
}


int main()
{
int nArray[] = { 1, 1, 2, 3, 3 };
int nLen = RemoveDuplicate( nArray, _countof( nArray ) );

for( int i = 0; i < nLen; ++i )
{
cout << nArray[i] << " ";
}
cout << endl;

return 0;
}



系列文章说明:
1.本系列文章[算法练习],仅仅是本人学习过程的一个记录以及自我激励,没有什么说教的意思。如果能给读者带来些许知识及感悟,那是我的荣幸。
2.本系列文章是本人学习陈东锋老师《进军硅谷,程序员面试揭秘》一书而写的一些心得体会,文章大多数观点均来自此书,特此说明!
3.文章之中,难免有诸多的错误与不足,欢迎读者批评指正,谢谢.

作者:山丘儿


标签:cout,int,++,算法,数组,文章,指针,nArray
From: https://blog.51cto.com/u_15905375/5919594

相关文章

  • 算法练习:两指针之三色排序
    问题描述输入一个整型数组,每个元素在0~2之间,其中0,1,2分别代表红、白、蓝。现要求对数组进行排序,相同颜色的在一起,而且按红白蓝顺序先后排列。要求时间复杂度为O(n)。 问题分......
  • C++知识点:数组末端下一位置
    c++语言规定,数组末端下一位置是合法的,但不允许对其解引用(即解引用是未定义的)。......
  • 前端学习之------检测数组中的id,在对象数组中是否存在?
    1、数组为:2、对象数组为:3、检测arr中的id,在objArr中是否存在? ......
  • 209. 长度最小的子数组
    给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥target 的长度最小的 连续子数组 [numsl,numsl+1,...,numsr-1,numsr] ,并返......
  • 注意!!一定要谨慎使用c/c++原生指针
    主要是顶层逻辑中引用了一个指针,而在业务逻辑中将此指针删除了。这种在代码量很少的情况下,很容易被发现,但是代码量多了,逻辑多了的时候,想一下子定位到问题所在,就没那么容易了......
  • 三.双指针
    ​​面试题16.06.最小差​​classSolution:defsmallestDifference(self,a:List[int],b:List[int])->int:a.sort();b.sort()i=j=0......
  • 五. 排序算法
    1.定义:1.1原地排序和非原地排序def.原地排序算法使用恒定的的额外空间来产生输出。原地排序:选择排序,插入排序,希尔排序,快速排序,堆排序。非原地排序:归并排序,计数排序,基数排......
  • 一致性哈希算法详解
    一致性哈希是什么,使用场景,解决了什么问题?转载:https://mp.weixin.qq.com/s/hJHMlbQpANwMjx9BetwkUg 1.如何分配请求大多数网站背后肯定不是只有一台服务器提供服务,因......
  • Java数组和字符串的相互转换
    Java数组和字符串的相互转换字符串转换为数组JavaString类中的toCharArray()方法将字符串转换为字符数组,具体代码如下所示。Stringstr="123abc";char[]arr=......
  • 数据挖掘算法-KNN算法
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......