写一个算法找出出现次数超过两次的人

ssq0121 2008-03-20 05:10:32
写一个算法找出出现次数超过两次的人,自己有点想不出来 麻烦各位哥哥们帮我下
...全文
141 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kanebluba 2008-03-21
  • 打赏
  • 举报
回复
LS的请问如果输入是int[]input={1,1,1,1,1,1,1,1,2,2,2,2,2,2,2}}
输出是1和2,用HahHSeT 怎么处理?
btb368 2008-03-21
  • 打赏
  • 举报
回复
int[] input = { 1, 2, 3, 3, 8, 6, 9, 4, 8, 5 };
Set<Integer> set = new HashSet<Integer>();

for (int i = 0; i < input.length; i++) {
if (!set.add(input[i])) {
System.out.println(input[i]);
}
}

自己想了想,还是用HashSet比较合适的。
xiaoyuanwang 2008-03-21
  • 打赏
  • 举报
回复
\顶一下4楼,hashmap
kanebluba 2008-03-21
  • 打赏
  • 举报
回复
LS各位的能不能用HashSet或者HashMap写段代码出来参考一下,自己对那个也不太熟.谢谢
kokobox 2008-03-21
  • 打赏
  • 举报
回复
先放到HashMap去掉重复的,然后得到的集合与原来的集合比较,这样就找出重复的了
xlongbuilder 2008-03-21
  • 打赏
  • 举报
回复
同意楼上
用hashSet
同理
ChangXiangzhong 2008-03-21
  • 打赏
  • 举报
回复
线排序
再看相邻的.
效率最高
nlog2n
btb368 2008-03-21
  • 打赏
  • 举报
回复
哪在加一个辅助的Set就可以.
int[] input = { 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2 };
Set<Integer> set = new HashSet<Integer>();
Set<Integer> set_temp = new HashSet<Integer>();
for (int i = 0; i < input.length; i++) {
if (!set.add(input[i])) {
set_temp.add(input[i]);
}
}

for (Object a : set_temp.toArray()) {
System.out.println(a);
}
kanebluba 2008-03-21
  • 打赏
  • 举报
回复
自己实现吧.不过HashSet真的挺方便的.
    int[] input = { 1, 2, 3, 3, 8, 6, 9, 4, 8, 5,3,3,3,8}; 
HashSet <Integer> set = new HashSet <Integer>();
HashSet <Integer> set2 =new HashSet <Integer>();
for (int i = 0; i < input.length; i++) {
if (!set.add(input[i])) {
if(set2.add(input[i]))
System.out.println(input[i]);
}
}
master_jt 2008-03-20
  • 打赏
  • 举报
回复
搞那么多二重循环,性能太低了,为什么不用HashMap,通过hash算法来判重
kanebluba 2008-03-20
  • 打赏
  • 举报
回复
重复过的变量不输出,第一次重复的值输出,以后再次重复的话不输出.

        int ch[]={1,2,1,1,2,2,2};
int len=ch.length;
ArrayList list=new ArrayList();
ArrayList list2=new ArrayList();
list.add(ch[0]);
int sign=0;
int sign2=0;
for(int i=1;i<len;i++)
{
sign=0;
for(int j=0;j<list.size();j++)
{
Integer a=(Integer)list.get(j);
int b=a.intValue();
if(ch[i]==b)
{sign=1;

if(sign==1)
{ sign2=0;
for(int k=0;k<list2.size();k++)
{
Integer d=(Integer)list2.get(k);
int c=d.intValue();
if(ch[i]==c)
{
sign2=1;
}

}
list2.add(ch[i]);
if(sign2==0)
System.out.println(ch[i]);

}

}



}
/*

**/
if(sign==0)
{
list.add(ch[i]);
}


}


dracularking 2008-03-20
  • 打赏
  • 举报
回复
int[] input = { 1, 2, 3, 3, 8, 6, 9, 4, 8, 5 }; 

for (int i = 0; i < input.length; i++) {
for (int j = i + 1; j < input.length; j++) {
if (input[i] == input[j]) {
System.out.println(input[i]);
break;
}
}
dracularking 2008-03-20
  • 打赏
  • 举报
回复
int[] input = { 1, 2, 3, 3, 8, 6, 9, 4, 8, 5 };

for (int i = 0; i < input.length; i++) {
for (int j = i + 1; j < input.length; j++) {
if (input[i] == input[j]) {
System.out.println(input[i]);
break;
}
}
}

或用Set

62,623

社区成员

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

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