题目:一个数组里,除了三个数是唯一出现的,其余的都出现偶数个,找出这三个数中的任一个。比如数组元素为【1, 2,4,5,6,4,2】,只有1,5,6这三个数字是唯一出现的,我们只需要输出1,5,6中的一个就行。
CSDN别人博客看得的
那位先生用的C写的,好吧,我不会C。
感兴趣可以看下。
地址:前辈的C版本
然后,我想了下用JAVA 写。
思路还算清晰。
几分钟就想出来。
七点半开始写,直到现在才成功。。。三个多小时。。
半个小时写完代码,写完大体,编译报错50多个。。。
当时想哭啊。。
然后修改,不下10次,才算编译过去,
运行结果和预料的不一样,
在修改,又是N次,最后原因是最后的if语句,偷懒没加{},多谢了:导致的。。。教训
思路是:
1:创建一个新数组,用来记录要选择的数组每个元素出现的次数,
这里借助一个计数器,
特别注意计数器计数完毕需要归零,开始没注意,总是失败。。。
2:然后 选择性输出,出现次数为一次或者多次的元素。
不知道有没有说清楚。。
运行结果:单次出现的元素是1,5,6,
CSDN别人博客看得的
那位先生用的C写的,好吧,我不会C。
感兴趣可以看下。
地址:前辈的C版本
然后,我想了下用JAVA 写。
思路还算清晰。
几分钟就想出来。
七点半开始写,直到现在才成功。。。三个多小时。。
半个小时写完代码,写完大体,编译报错50多个。。。
当时想哭啊。。

然后修改,不下10次,才算编译过去,
运行结果和预料的不一样,
在修改,又是N次,最后原因是最后的if语句,偷懒没加{},多谢了:导致的。。。教训
思路是:
1:创建一个新数组,用来记录要选择的数组每个元素出现的次数,
这里借助一个计数器,
特别注意计数器计数完毕需要归零,开始没注意,总是失败。。。
2:然后 选择性输出,出现次数为一次或者多次的元素。
不知道有没有说清楚。。
如图:

代码附上。。。
其他高手有其他算法可以交流。。。
/*
题目:一个数组里,除了三个数是唯一出现的,其余的都出现偶数个,
找出这三个数中的任一个。比如数组元素为【1, 2,4,5,6,4,2】,
只有1,5,6这三个数字是唯一出现的,
我们只需要输出1,5,6中的一个就行。
*/
class screen{
public void get(int[] arr)
{
//定义两个数组用来存储和记录 copy[] 用来复制一遍输入数组 record[] 用来存储数组相同元素出现次数
//counter 用来记录出现次数
int counter=0;
int record[] = new int[arr.length];
//遍历数组元素
for (int x=0;x<arr.length;x++)
{
for (int y=0;y<arr.length;y++)
{
if(arr[x]==arr[y])//比较是否相同,本来还有选择性不和自身比较,最后比较懒,没写。。。
{
counter++;
}
}
record[x]=counter; //用数组记录下元素出现次数
counter=0;//计数器归零,很重要
}
System.out.println();
//找到出现多次的元素
//遍历数组
//查看下定义的数组是否记录准确
//System.out.print("record.lenth="+record.length) ;
/*for (int x=0;x<arr.length;x++)
{
System.out.print("record ["+x+"]="+record [x]+",");
System.out.println();
}*/
System.out.println();
System.out.print("单次出现的元素是");
for (int x=0;x<arr.length;x++)
{
if(record[x]==1)
{
System.out.print(arr[x]+",");
}
}
}
}
public class screenText
{
public static void main(String[] args)
{
int arr[]={1, 2,4,5,6,4,2};
screen sc=new screen();
sc.get (arr);
}
}
运行结果:单次出现的元素是1,5,6,
谢谢观看。。
原创哦。。。
本文介绍了一种使用Java找出数组中仅出现一次的数值的方法。通过创建一个辅助数组来记录每个元素出现的次数,并筛选出出现一次的数值。

被折叠的 条评论
为什么被折叠?



