射击比赛

  • 给定一个射击比赛成绩单
  • 包含多个选手若干次射击的成绩分数
  • 请对每个选手按其最高三个分数之和进行降序排名
  • 输出降序排名后的选手id序列
  • 条件如下
    1. 一个选手可以有多个射击成绩的分数,且次序不固定
    2. 如果选手的成绩之和相等,则相等的选手按照其id降序排列
    3. 如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手
//这里放回的集合存放的就是题目要求的选手成绩排序,根据题目要求遍历即可
public List<Integer> answer(int num, int[] id, int[] score){
        //建立集合,存放运动员id, 射击次数, 成绩
        Map<Integer, Integer[]> map = new HashMap<>(num);
        //循环遍历,存放运动员的信息
        for (int i = 0; i < id.length; i++) {
            if (map.containsKey(id[i])){
                map.put(id[i], new Integer[]{map.get(id[i])[0] + 1, map.get(id[i])[1] + score[i]});
            }else {
                map.put(id[i], new Integer[]{1, score[i]});
            }
        }
        //用以排序
        Map<Integer, List<Integer>> orderMap = new HashMap<>();
        Set<Integer> integers = map.keySet();
        //存放有效运动员的成绩和id
        for (Integer ids : integers){
            Integer[] data = map.get(ids);

            if (data[0] >= 3){
                if (orderMap.containsKey(data[1])){
                    orderMap.get(data[1]).add(ids);
                }else {
                    List<Integer> list = new ArrayList<>();
                    list.add(ids);
                    orderMap.put(data[1], list);
                }
            }
        }
        Set<Integer> scoreSet = orderMap.keySet();
//        Object[] scoreArr = scoreSet.toArray();
        Integer[] arr = new Integer[scoreSet.size()];
        scoreSet.toArray(arr);
        Arrays.sort(arr, (o1, o2) -> o2 - o1);
        System.out.println(Arrays.toString(arr));

        List<Integer> idList = new ArrayList<>();
        for (Integer o : arr) {
            List<Integer> list = orderMap.get(o);
            Integer[] tempArr = new Integer[list.size()];
            list.toArray(tempArr);
            if (list.size() > 1){
                Arrays.sort(tempArr, (o1, o2) -> o2 - o1);
            }
            idList.addAll(Arrays.asList(tempArr));
            System.out.println(Arrays.toString(tempArr));
        }
        return idList;
    }

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务