(去重)去除数组中重复数字的算法
2016-12-17 16:03
381 查看
(去重)去除数组中重复数字的算法
怀着4级英语奔溃的心情,分享这篇算法
VS2013 编译通过
C++ 语言编写
代码注释的很详细了 不废话 看代码
int Delete_repetition(int a[], int n)
{
int i = 0;
int num = 0;
int max = 0; //数组a 中的最大数值
//找出数组a中的最大数值
for (int u = 0; u < n;u++)
{
if (max<a[u])
{
max = a[u];
}
}
//申请‘标志’数组
int * flag = new int[max];
//将标志数组置为false
while (i<max)
{
flag[i] = false;
i++;
}
//将出现过的数保存到对应的位置 如果a数组中有相同的数字
//因为保存在“标志”数组中的位置相同 所以达到了去重的作用
for (int j = 0; j < n;j++)
{
flag[a[j]] = a[j];
}
//筛选有效的数字
for (int k = 0; k <max+1;k++)
{
if (flag[k]!=false)
{
a[num] = flag[k];
num++;
}
}
//返回去重后数组的最大下标
return num;
}
int main()
{
int n;
cin >> n;
int a[100];
for (int i = 0; i < n;i++)
{
cin>>a[i];
}
int number = Delete_repetition(a, n);
cout << number << endl;
for (int d = 0; d <number;d++)
{
cout << a[d] << " ";
}
system("pause");
return 0;
}
相关文章推荐
- C/C++面试之算法系列--去除数组中的重复数字
- C/C++面试之算法系列--去除数组中的重复数字
- 问题描述如下: 有2.5亿个整数(这2.5亿个整数存储在一个数组里面,至于数组是放在外存还是内存,没有进一步具体说明); 要求找出这2.5亿个数字里面,不重复的数字的个数; 另外,可用的内存限定为600M; 要求算法尽量高效,最优;
- 一道Javascript面试题,去除数组中的重复数字,大家看看我的做法是否正确
- 算法 去除数组重复项
- 去除数组中的重复数字
- 去除数组中的重复数字
- 随机生成30个数字(范围0-30)存到一个数组中,将数组中重复的数字去除,动态创建数组保存剩下的数字
- 笔试算法题(29):判断元素范围1到N的数组是否有重复数字 & 计算整数的7倍
- 算法题目一:如果数组中数字重复最多的次数大于数组长度的一半,返回1,否则返回0
- 【我解C语言面试题系列】008 去除数组中重复数字问题
- leetcode:Remove Duplicates from Sorted Array(去掉数组重复数字,常数空间限制)【面试算法题】
- 去除数组中重复数字问题
- 已知一个数组int[98],该数组里面存储了0~99共100个数字中的98个,数字不重复,请用算法算出0~99中缺少的2个数字是哪两个?
- 数字数组去除重复值
- 判断一个整数数组中是否有重复数字出现的O(n)时间复杂度算法
- 【我解C语言面试题系列】009 特殊的去除数组中重复数字问题
- 去除数组中的重复数字
- 一个数组中有30个数(随机产生[0,30]),将数组中重复的数字去除,动态创建数组保存剩下的数字
- 一个数组中有30个数(随机产生[0,30]),将数组中重复的数字去除,动态创建数组保存剩下的数字