华为招聘练习--小明的筷子

来源:互联网 发布:linux系统密码破解 编辑:程序博客网 时间:2024/04/28 16:13
描述:

    小明是个马大哈,某天他到超市买了若干双筷子(小于20)
    筷子的长度不尽相同,他把全部筷子都放在购物袋里面拿回家,路上不小心漏了一根
    请你用程序帮他找出漏掉的筷子是多长的。

输入:

第一行:非负的整数, 剩下的筷子的根数; 例如:7
第二行:剩下的筷子的各个长度值。例如:1 2 3 2 1 3 2(每一根筷子的长度必然大于0, 不需要校验)

建议:读入输入的整数的时候,不要读入换行符('\n')

输出:

漏掉的筷子的长度,如上述输入返回:2

当输入的数据异常时输出-1,如:找不到漏掉的筷子

备注:如果漏掉了多根筷子,返回任意一根漏掉的筷子即可。

输出整数后,不需要输出换行符。

样例输入:
7
1 2 3 2 1 3 2
样例输出:
2

编程代码:

import java.util.*;public class Main{    public static void main(String[] args) {        Scanner input =new Scanner(System.in);        try{            int num = input.nextInt();            String line ="";            int[] leg;            while((line=input.nextLine())!= null && !(line=input.nextLine()).equals(' ')){                String text = line.replace('\n',' ').trim();                String[] tem = text.split(" ");                leg = new int[tem.length];                for(int i=0;i<leg.length;i++){                    leg[i] = Integer.parseInt(tem[i]);                }                if((num == leg.length) && (num<20) && (num % 2 != 0) && (num > 0)) {                    System.out.println(checkChopsticks(leg));                    break;                }else {                    System.out.println(-1);                    break;                }            }        }catch (Exception e){            System.out.println(-1);        }    }    private static int checkChopsticks(int[] chopsticks){        Map<Integer,Integer> tt = new HashMap<Integer, Integer>();        int count = 0;        for(int i =0;i<chopsticks.length;i++){            if (tt.containsKey(chopsticks[i])){                count = tt.get(chopsticks[i])+1;            }else {                count = 1;            }            tt.put(chopsticks[i],count);        }        for(int i =0;i<chopsticks.length;i++){            if (tt.get(chopsticks[i])%2==0){                continue;            }else if (tt.get(chopsticks[i])%2!=0){                return chopsticks[i];            }        }        return -1;    }}

0 0
原创粉丝点击