笔试时曾经遇到过的一道题,当时没有好的想法。
今天无意中想起,于是把自己的一种解决方法记下来。
1. main.cpp
/**
* 问题描述:
* 删除数组内重复的数据
*
* 一个解决方法:
* 可以先将数组排序,然后再删除
* 如一个已经排好序的整数数组:1, 1, 2, 2, 3
*/
#include <iostream>
using std::cout;
using std::endl;
using std::swap;
/**
* 打印数组
*/
template<class T>
void printArray(const T array[], const int size);
/**
* 将数组排序,选择排序
*/
template<class T>
void sort(T array[], const int size);
/**
* 对已经排好序的数据
* 将数组内重复的数据删除
* @return int 删除重复数据后数组的大小
*/
template<class T>
int deleteRepeatedData(T array[], const int size);
int main(int argc, char *argv[]) {
int array[] = {9, 1, 1, 8, 2, 3, 3, 4, 3, 3, 5, 9, 7, 8, 2, 6, 9, 1, 9, 0, 9, 0};
int size = sizeof(array) / sizeof(int);
cout<<"A initial int array: "<<endl;
printArray(array, size);
cout<<"\nAfter sort: "<<endl;
sort(array, size);
printArray(array, size);
cout<<"\nAfter delete repeated data: "<<endl;
size = deleteRepeatedData(array, size);
printArray(array, size);
}
/**
* 打印数组
*/
template<class T>
void printArray(const T array[], const int size) {
for (int i=0; i<size-1; i++) {
cout<<array[i]<<", ";
}
cout<<array[size-1]<<endl;
}
/**
* 将数组排序,选择排序
*/
template<class T>
void sort(T array[], const int size) {
for (int i=0; i<size-1; i++) {
int min = i;
for (int j=i+1; j<size; j++) {
if (array[min] > array[j]) {
min = j;
}
}
if (min != i) {
swap(array[i], array[min]);
}
}
}
/**
* 对已经排好序的数据
* 将数组内重复的数据删除
* @return int 删除重复数据后数组的大小
*/
template<class T>
int deleteRepeatedData(T array[], const int size) {
int j = 0;
for (int i=0; i<size-1; i++) {
while (array[i] == array[i+1]) {
i++;
}
array[j++] = array[i];
}
return j;
}
2. main.cpp download
注:发表于: 2008-11-10 ,修改于: 2009-05-16 13:24,chinaunix
分享到:
相关推荐
LabVIEW 删除数组中重复元素实例 , LabVIEW8.2 编写 删除数组中重复的元素. 查找重复元素 并删除重复
这是一个用C++编的删除数组中的重复元素的程序~
matlab中如何去掉数组中重复的值
java删除数组或是集合中重复的数据
this vi is capble to remove the duplicated elements in the labview array.
VB.NET删除数组中的重复元素,包括源码和可执行程序,已在VS2005中测试通过。
主要介绍了JS数组去掉重复数据只保留一条的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
通过perl脚本,删除数据组中重复的字段
本文实例讲述了javascript删除数组重复元素的方法。分享给大家供大家参考。具体分析如下: 这里分享一个前端面试高频题,主要实现javascript删除数组重复元素。希望对初学者有所帮助 //数组去重的方法 Array....
为您提供易语言删除数组重复成员源码下载,易语言删除数组重复成员源码 系统结构: 易语言删除数组,删除数组重复成员
本文实例讲述了JavaScript实现删除数组重复元素的5种常用高效算法。分享给大家供大家参考,具体如下: 这里就 js 如何实现数组去重整理出5种方法,并附上演示Demo 以及 源码。 1.遍历数组法 最简单的去重方法, 实现...
从数组中删除指定的字符,其中包括重复的字符
//两数组去除重复数值 mergeArray: function(arr1, arr2) { for (var i = 0; i < arr1.length; i++) { for (var j = 0; j < arr2.length; j++) { if (arr1[i] === arr2[j]) { arr1.splice(i, 1); //利用...
偶尔需要我们比较两个数组,在一个数组中删除另一个数组存在的值。我们常常用的方法是循环比较判断并删除,最近看到另一个好方法巧妙删除的例子: var arr1 = ["i", "b", "c", "d", "e", "f","x"]; //数组A var...
请编写函数fun,函数的功能是:删去一维... 的顺序排列,函数返回删除后数组中数据的个数。 例如,一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后数组中的内容应该是:2 3 4 5 6 7 8 9 10。
plsql删除重复记录
基于PCL写的一个删除点云数据中的重复点的程序,也可以稍作修改删除数组中的重复点。目前测试一个四千万个点的点云数据,其中包含有一千万个重复点,运行时间为50s。 文件中是源码,其中包含CMakeLists.txt,可通过...
本文实例讲述了PHP查询并删除数据库多列重复数据的方法。分享给大家供大家参考,具体如下: <?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); }...
一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。