每日一题【二】-数组元素去重
来源:互联网 发布:java集合类有哪些 编辑:程序博客网 时间:2024/06/04 20:13
2.5亿个整数(范围是从1到2.5)中找出不重复的整数的个数,内存空间不足以容纳这2.5亿个整数。
解决思路是利用bitmap,此处将问题简化,考虑一个数组,数组中保存这20个数,这些数的范围是1到20.编写函数将数组中重复的数字去掉,且占用的额外空间最小。
#include <iostream>#define byteSize 8#define numMax 20using namespace std;void setbit1(char* p,int num){int pos=num/byteSize;//确定num所在的p数组的索引int moveBits=num%byteSize;//当前数组索引处数字要移动的位数if((p[pos]>>moveBits&0x01)==0x00){{//如果传入的num所在的位处为0;p[pos]=p[pos]|(0x01<<moveBits);//将该位置1}}void deleteRepeatNum(int a[],int n){int byteNum;if(numMax/byteSize==0)byteNum=numMax/byteSize;else byteNum=numMax/byteSize+1;char* p= new char[byteNum];memset(p,0,byteNum);for(int i=0;i<n;i++){setbit1(p,a[i]);}for(int j=0;j<numMax;j++){//输入去重后的结果if((p[j/byteSize]>>j%byteSize&0x01)!=0x00) cout<<j<<"_";}}int main(){int a[20]={1,1,2,10,2,3,15,6,9,8,11,11,19,14,13,15,15,18,19,17};deleteRepeatNum(a,20);return 0;}
- 每日一题【二】-数组元素去重
- 数组元素去重
- 数组元素去重
- 每日一题(26) - 数组元素重排
- JS数组元素去重
- js数组元素去重
- matlab 数组元素去重
- js数组元素去重
- 一维数组去重
- c++ 数组Vector元素去重
- js中数组元素去重
- php 数组元素快速去重
- js字符串,数组元素去重
- C++数组元素 排序 去重
- 数组添加元素并去重
- php 数组元素快速去重
- php 数组元素快速去重
- php 数组元素快速去重
- The Best 404 Error Pages Of All Time
- 快速排序的一种写法
- 二分查找的递归算法(折半查找)
- Linux 如何挂载光驱
- 错误关联器 C++实现
- 每日一题【二】-数组元素去重
- zoj 2100 Seeding(dfs)
- 学习笔记:shared_ptr陷阱
- VS2010下配置OpenCV2.2运行环境
- qt4 http
- OpenCms数据备份与转移,OpenCms 数据备份 转移 与 还原
- NSString category:unrecognized selector sent to instance
- (2011.11.20)02_循环链表举例_约瑟夫(Joseph)环问题.cpp
- 小小的记载……