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

描述:

    小明是个马大哈,某天他到超市买了若干双筷子(小于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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值