找出栈中唯一重复的元素

题目描述:

  数字1~1000放在含有1001个元素的数组中,其中只有唯一的一个元素值重复,其他数字均为一次。设计一个算法,将重复元素找出来,要求每个数组元素只能访问一次。如果不使用辅助存储空间设计一个算法实现。

分析:

  在一个有且只有一个元素值重复的数组中找出这个唯一的重复元素,而限定条件就是每个数组元素只能访问一次,并且不许使用辅助存储空间。显然,从前面对Hash法的分析可知,如果题目没有是否可以使用辅助数组限制,最简单的方法就是使用Hash法。
  当使用Hash法时,具体过程:首先定义一个长度为1000的Hash数组,将Hash数组中的元素都对初始化为0,将原数组中的元素逐一映射到该Has是数组中,当对应的Hash数组中的值为0时,则置该Hash元素中的值为1,当对应的Hash数组中该处的值为1时,则表明该位置的数载原数组中是重复的,输出即可。

实现代码如下:

package lock;
import java.util.Hashtable;

public class T1 {
	
	public static int findDup(int[] array)
	{
		if(null==array)
			return -1;
		int len=array.length;
		Hashtable<Integer,Integer>hashtable=new Hashtable<>();
		int i;
		for(i=0;i<len-1;i++)
			hashtable.put(i, 0);
		for(i=0;i<len;i++)
		{
			if(hashtable.get(array[i]-1)==0)
			{
				hashtable.put(array[i]-1,array[i]-1);
			}
			else
			{
				return array[i];
			}
		}
		return -1;
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int array[]= {1,3,4,2,5,3};
		System.out.println(findDup(array));

	}

}

实验结果:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值