面试题:如何从三亿个整数里面找出不重复的数字的个数
2013-07-07 13:27
323 查看
最近看到百度一道面试题:如何从2.5亿个整数里面找出不重复的数字的个数
写了如下实现,时间略紧,想法略粗,有错误还请各位指出!谢谢。
int[] isRepeat = new int[arr.length];修改为int[] isRepeat = new int[250000000];
需申请jvm 512M的内存
public static int getCount(int[] arr) {
int norepeatCount = 0;//不重复的数字数量
// int repeatCount = 0;//重复出现多次的数量
int[] isRepeat = new int[arr.length];
for (int i : isRepeat) {
isRepeat[i]=0;
}
// 读入一个数,查看相应flag是否为0,如果为0,flag置1,count加1,如果为1,不做处理
for (int i = 0; i < arr.length; i++) {
int count = 1;
if(isRepeat[arr[i]] == 0){
isRepeat[arr[i]] += count;
} else if (isRepeat[arr[i]] > 0) {
isRepeat[arr[i]] += count ;
}
}
for (int i : isRepeat) {
if (i == 1) {
norepeatCount++;//返回的是出现一次的
}
// else if (i > 1) {
// repeatCount++;////返回重复出现多次的数量
// }
}
return norepeatCount;
}
public static void main(String[] args) throws ParseException {
int[] arr = { 1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 8, 8, 8, 9, 10, 10 };
System.out.println(getCount(arr));
}
写了如下实现,时间略紧,想法略粗,有错误还请各位指出!谢谢。
int[] isRepeat = new int[arr.length];修改为int[] isRepeat = new int[250000000];
需申请jvm 512M的内存
public static int getCount(int[] arr) {
int norepeatCount = 0;//不重复的数字数量
// int repeatCount = 0;//重复出现多次的数量
int[] isRepeat = new int[arr.length];
for (int i : isRepeat) {
isRepeat[i]=0;
}
// 读入一个数,查看相应flag是否为0,如果为0,flag置1,count加1,如果为1,不做处理
for (int i = 0; i < arr.length; i++) {
int count = 1;
if(isRepeat[arr[i]] == 0){
isRepeat[arr[i]] += count;
} else if (isRepeat[arr[i]] > 0) {
isRepeat[arr[i]] += count ;
}
}
for (int i : isRepeat) {
if (i == 1) {
norepeatCount++;//返回的是出现一次的
}
// else if (i > 1) {
// repeatCount++;////返回重复出现多次的数量
// }
}
return norepeatCount;
}
public static void main(String[] args) throws ParseException {
int[] arr = { 1, 2, 2, 3, 4, 5, 6, 7, 7, 8, 8, 8, 8, 9, 10, 10 };
System.out.println(getCount(arr));
}
相关文章推荐
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 问题描述如下: 有2.5亿个整数(这2.5亿个整数存储在一个数组里面,至于数组是放在外存还是内存,没有进一步具体说明); 要求找出这2.5亿个数字里面,不重复的数字的个数; 另外,可用的内存限定为600M; 要求算法尽量高效,最优;
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 计数排序——有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
- 软件开发者面试百问-----有一个数组,里面是从1到1,000,000的整数,其中有一个数字出现了两次,你怎么找出那个重复的数字?
- 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
- 一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数
- 面试题:在一个数组中有0-99之间的整数101个(数组无序),用高效方法找出其中的唯一的重复元素!
- 如何比对EXCEL里面同一列的数字是否有重复
- 算法面试题之不修改数组找出重复的数字
- Java如何找出数组中重复的数字
- 算法-在1001个整数中找出一个重复出现的数字
- java面试题去除一个int整数的重复数字然后倒着输出
- 面试题:n个整数的序列,其中一个整数重复次数超过一半,在O(n)时间内找出该整数
- 剑指offer——面试题3:找出数组中重复的数字
- 运用bitmap解决一道海量数据处理面试题:在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。
- J2EE面试题之 java如何找出一个int数组中出现次数最多的数字以及出现次数?