小米2013校园招聘笔试题_JAVA版本

本文介绍了一种使用Java找出数组中仅出现一次的数值的方法。通过创建一个辅助数组来记录每个元素出现的次数,并筛选出出现一次的数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:一个数组里,除了三个数是唯一出现的,其余的都出现偶数个,找出这三个数中的任一个。比如数组元素为【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, 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,


谢谢观看。。

原创哦。。。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值