从C / C数组++为O删除重复(n)时间 [英] Removing duplicates from an array in C/C++ in O(n) time
本文介绍了从C / C数组++为O删除重复(n)时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有一个像
int array[] = {1,1,1,4,5,7,7,9,11};
我应该能够消除所有重复的,因此我的输出应为{1,4,5,7,9,11}。
I should be able to remove all the duplicates and hence my output should be {1,4,5,7,9,11}.
约束:
- 我不能拆开使用任何形式的额外内存从变量
- 我应该能够调整阵列
- 我不允许使用容器的Hashset像或者设置等:
- 如果在O完成(n)时间
推荐答案
如果数组进行排序,然后这个逻辑可以适用。
If the array is sorted, then this logic could be applied.
- 有两个指针(P1,P2)指向数组的开头。
- 增量指针P2。检查用P2和P1所指向的价值是相等的。
- 如果是,进一步增加,并达到其中P1和P2指出的值不相等的点。现在转到第5步。
- 如果没有,分配P1至P2和重复步骤2。
- 现在,除去P1和P2之间的元素。 P2分配到P1。
重复这个过程,直到你到达阵列的终点。
Repeat the process until you reach the end point of the array.
这篇关于从C / C数组++为O删除重复(n)时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文