zoukankan      html  css  js  c++  java
  • PTA 天梯赛 L2_021

    考察自定义结构体的排序

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.HashSet;
    import java.util.Set;
    
    public class Main {
    
        public static void main(String[] args) throws Exception {  // 自定义结构体排序
            BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(bf.readLine());
    //        int[][] list = new int[N][2];
    //        String[] name = new String[N];
            Node[] nlist = new Node[N];
            Set<String> set = new HashSet<String>();
            for (int i = 0; i < N; i++) {
                set.clear();
                String[] s = bf.readLine().split(" ");
    //            name[i] = s[0]; // 输入的名字
                int times = Integer.parseInt(s[1]);
    //            list[i][1] = times; // 总共输入的数字
                for (int j = 2; j < s.length; j++) {
                    set.add(s[j]);
                }
    //            list[i][0] = set.size(); // 不重复的标签的数量
                nlist[i] = new Node(s[0], set.size(), times);
            }  // 完成输入的功能
    //        for(Node e: nlist) {
    //            System.out.println(e.name + " " + e.setLen + " " + e.allLen);
    //        }
    //        System.out.println();
            Arrays.sort(nlist, new cmp());
            
    //        for(Node e: nlist) {
    //            System.out.println(e.name + " " + e.setLen + " " + e.allLen);
    //        }
            
            if(nlist.length >= 3) {
                for(int i=nlist.length-1; i>=nlist.length-3; i--) {
                    if(i == nlist.length-1) {
                        System.out.print(nlist[i].name);
                    } else {
                        System.out.print(" "+nlist[i].name);
                    }
                }
            } else {
                if(nlist.length == 2) {
                    for(int i=nlist.length-1; i>=nlist.length-2; i--) {
                        if(i == nlist.length-1) {
                            System.out.print(nlist[i].name);
                        } else {
                            System.out.print(" "+nlist[i].name);
                        }
                    }
                    System.out.print(" " + "-");
                } else if(nlist.length == 1) {
                    System.out.print(nlist[0].name + " - -");
                }
            }
        }
        
        static class cmp implements Comparator<Node>{
            // 降序排列
            public int compare(Node A, Node B) {
                if (A.setLen == B.setLen) {
                    if (A.allLen < B.allLen)
                        return 1;
                    else
                        return -1;
                }
                if (A.setLen > B.setLen)
                    return 1;
                else
                    return -1;
            }
        }
        
        static class Node {
            String name;
            int setLen;
            int allLen;
            Node(String name, int setLen, int allLen) {
                this.name = name;
                this.setLen = setLen;
                this.allLen = allLen;
            }
            
        }
    
    }

    最后两个点超时了.

  • 相关阅读:
    video兼容ie,ckplayer网页播放器
    边框在2个边,不重叠不接触的情况下是梯形。
    【Unity】关于屏幕自适应的思路
    【Unity】鼠标指向某物体,在其上显示物体的名字等等等等信息
    【C#】关于左移/右移运算符的使用
    【Unity】鼠标点选物体
    Python time和datetime模块
    Python 模块之间的调用
    SaltStack 使用pillar安装配置管理zabbix
    SaltStack 实践课程一
  • 原文地址:https://www.cnblogs.com/huangZ-H/p/10612547.html
Copyright © 2011-2022 走看看