黑马程序员技术交流社区
标题:
请教个算法题
[打印本页]
作者:
孙沛
时间:
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
class FindSame
{
public static void main(String[] args)
{
int[] arr={2,12,6,8,6,48,25,12,6,5,2};//你自己定义的数组
int[] temp=new int[arr.length/2];//新建一个temp数组来记录重复值,最多重复值的个数是定义数组元素个数的一半
int pos=0;//定义一个指针变量来记录在temp数组中已经添加到了哪个角标
for (int x=0;x<arr.length ;x++ )//遍历arr数组
{
w:for (int y=x+1;y<arr.length;y++ )//内循环w中,是用外循环的元素与剩下的每个元素进行比较
{
if(arr[x]==arr[y])//如果有值相同的话
{
for (int z=0;z<pos ;z++ )//先判断此值是否已经被添加到temp数组中
{
if(arr[x]==temp[z])
break w;//如果有的话直接跳出内循环w,因为此时无需再添加
}
temp[pos++]=arr[x];//没有的话就添加一个值到temp数组中
}
}
}
for (int i=0;i<=pos-1 ;i++ )//遍历我们添加好的数组
{
System.out.print("重复的数字有"+temp[i]+",");
}
}
}
复制代码
不知道你满意否
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2