码迷,mamicode.com
首页 > 其他好文 > 详细

2015华为机试——小明的筷子

时间:2015-07-13 10:20:23      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:2015华为机试   java   hashmap   算法   

题目描述:


小明是个马大哈,某天他到超市买了若干双筷子(n<20)筷子的长度不尽相同,他把全部筷子都放在购物袋里面拿回家,路上不小心漏了一根

请你用程序帮他找出是漏掉的筷子是多长的。


输入:  剩下的筷子数组,如:1, 2, 3, 2, 1, 3, 2


返回值:漏掉的筷子长度,如上述输入返回:2(当输入的筷子数据异常时返回-1,如:找不到漏掉的筷子)



解题思路:使用HashMap对筷子的种类与数量进行键值对匹配存储,当出现重复筷子时,对应的筷子数量+1,然后遍历一次HashMap,获取筷子的数量,

如果是奇数则为漏掉的筷子。


代码如下:


public class xiaoming_kuaizi
{

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		int[] chopsticks={1,2,3,2,1,3,2};
		System.out.println(checkChopsticks(chopsticks));
	}
	
    /**
     * 小明是个马大哈,某天他到超市买了若干双筷子(n<20)
     *  筷子的长度不尽相同,他把全部筷子都放在购物袋里面拿回家,路上不小心漏了一根
     *  请你用程序帮他找出是漏掉的筷子是多长的。
     * 
     * 
     * @param chopsticks  剩下的筷子数组,如:1, 2, 3, 2, 1, 3, 2
     * @return int 漏掉的筷子长度,如上述输入返回:2(当输入的筷子数据异常时返回-1,如:找不到漏掉的筷子)
     * 
     */
    public static int checkChopsticks(int[] chopsticks)
    {  
    	Map<Integer,Integer> hm=new HashMap<Integer,Integer>();
    	int count=0;
    	for (int i = 0; i < chopsticks.length; i++)
		{
			if (hm.containsKey(chopsticks[i]))
			{
				count=hm.get(chopsticks[i])+1;
			}
			else
			{
				count=1;
			}
			hm.put(chopsticks[i], count);
		}
    	
    	for (int i = 0; i < chopsticks.length; i++)
		{
			if (hm.get(chopsticks[i])%2==0)
			{
				continue;
			}
			else if (hm.get(chopsticks[i])%2!=0)
			{
				return chopsticks[i];
			}
	
		}
    	return -1;
    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

2015华为机试——小明的筷子

标签:2015华为机试   java   hashmap   算法   

原文地址:http://blog.csdn.net/zzc8265020/article/details/46858607

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!