黑马程序员技术交流社区

标题: 请教个算法题 [打印本页]

作者: 孙沛    时间: 2012-9-4 09:49
标题: 请教个算法题
1001个范围是
0~1000
的数字,找出
所有
重复的数字,如何实现


作者: 杨震    时间: 2012-9-4 10:38
利用map进行出现的数字个数统计,然后输出个数大于一的就是了
作者: 刘明月    时间: 2012-9-4 11:04
public static void main(String[] args) {
  int arr[]={1,2,34,12,2,34,1,1,1,34};//我定义的是数组长度为10的数组
  
  for(int i=0;i<arr.length;i++)
  {
   int count=0;
   y:for(int j=0;j<arr.length;j++){//循环判断数组中有没有和下标为i的值相等的元素,此处的循环标记为y
    if(arr[i]==arr[j])//当数组元素相等时会发生两种情况
    {
     if(i>0)
     {
      for(int k=0;k<i;k++){//情况一:下标为i>0时,可能会发生j<i的元素值和i的元素值相等,这是以前判断过的,直接退出这次循环,就是进行i+1的操作
       if(arr[i]==arr[k])
        continue y;
      }
      count++;
     }
     else//情况二:当下标为0时,只要循环判断是不是有相等的元素,然后进行count计数即可
      count++;
    }
   
   }
   if(count>1)//循环判断完成后,判断count是否大于1,如果符合条件,输出该值,并打印个数
    System.out.println(arr[i]+"  "+count);
  }
}


作者: 郭阳    时间: 2012-9-4 13:54
  1. class FindSame
  2. {
  3. public static void main(String[] args)
  4. {
  5. int[] arr={2,12,6,8,6,48,25,12,6,5,2};//你自己定义的数组
  6. int[] temp=new int[arr.length/2];//新建一个temp数组来记录重复值,最多重复值的个数是定义数组元素个数的一半
  7. int pos=0;//定义一个指针变量来记录在temp数组中已经添加到了哪个角标
  8. for (int x=0;x<arr.length ;x++ )//遍历arr数组
  9. {
  10. w:for (int y=x+1;y<arr.length;y++ )//内循环w中,是用外循环的元素与剩下的每个元素进行比较
  11. {
  12. if(arr[x]==arr[y])//如果有值相同的话
  13. {
  14. for (int z=0;z<pos ;z++ )//先判断此值是否已经被添加到temp数组中
  15. {
  16. if(arr[x]==temp[z])
  17. break w;//如果有的话直接跳出内循环w,因为此时无需再添加
  18. }
  19. temp[pos++]=arr[x];//没有的话就添加一个值到temp数组中
  20. }
  21. }
  22. }
  23. for (int i=0;i<=pos-1 ;i++ )//遍历我们添加好的数组
  24. {
  25. System.out.print("重复的数字有"+temp[i]+",");
  26. }
  27. }
  28. }
复制代码
不知道你满意否





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2