输出数组中重复记录的下标

lirihong 2009-03-24 12:59:57
今天小弟去了一家面试,出了这么一道编程题,想了好长时间没有什么好的方法去实现,请哪位指点一下!谢谢!
现有一个长度为50的一个数组,要求将数组中重复数据10次以上的记录的数组下标打印在控制台上!
例如:控制台上输出:重复数据A:1,2,4,6,7,12,14,16,25,28,36,38,45,48


请高手解答!
...全文
350 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoojo 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Arc365 的回复:]
for( int i=0;i <array.length;i++){
if(!map.contains(array[i]){
map.put(array[i],String.valueOf(i));
}else{
String str=(String)map.get(array[i]);
str=str+","+String.valueOf(i);
}
}
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String str=(String)map.get(it.next);
String arr[]=str.split(",");
if(arr.length>10){
//打印出下标
}
}
[/Quote]
赞成
lirihong 2009-03-24
  • 打赏
  • 举报
回复
哪位前辈还有什么方法??指点一下!
Arc365 2009-03-24
  • 打赏
  • 举报
回复
for( int i=0;i<array.length;i++){
if(!map.contains(array[i]){
map.put(array[i],String.valueOf(i));
}else{
String str=(String)map.get(array[i]);
str=str+","+String.valueOf(i);
}
}
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String str=(String)map.get(it.next);
String arr[]=str.split(",");
if(arr.length>10){
//打印出下标
}
}
sjkof 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lirihong 的回复:]
这个数组不是int[] 有可能是string[] 所以不能排序
[/Quote]

string也可以比大小,但是排序的时间复杂度有O(nlgn),比遍历O(n)大好多呢
lirihong 2009-03-24
  • 打赏
  • 举报
回复
最好谁能给一个代码!谢谢
lirihong 2009-03-24
  • 打赏
  • 举报
回复
这个数组不是int[] 有可能是string[] 所以不能排序
lookupwtd 2009-03-24
  • 打赏
  • 举报
回复
1,将数组copy给副本
2,对副本排序
3,循环查找连续出现5次的数
4,如果出现5次的数,判断后面紧接着的5位数是否跟3步查找出来的数相同,若相同做好标记
5,跟据查出的数在数组的原型中输出对应的下标
niuxinlong 2009-03-24
  • 打赏
  • 举报
回复
先讲数组赋值给一个新数组,然后对新数组进行操作。
先得到第一个数组的值,并将第一个元素移除出数组
以得到的第一个元素为标准开始遍历,有跟它重复的计数器加1(计数器初始值为1),将重复的数据移除出数组,如果计数器大于活等于10,讲其存放到一个自定的地方(如list中),依次遍历
最后根据list中的元素值到原数组中查找下标并将其打印到控制台,
lz可以试试,
lirihong 2009-03-24
  • 打赏
  • 举报
回复
不太清楚你所说的遍历一次是怎么去遍历?
vinep 2009-03-24
  • 打赏
  • 举报
回复
先把数组遍历一次,把重复10次以上的字符找出来。
然后再遍历一次,将找到字符的位置输出。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧