题目描述:
小明是个马大哈,某天他到超市买了若干双筷子(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; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zzc8265020/article/details/46858607