#纪念机试挂掉##华为机试#

4.06 0分

第一道
输出最高权数的前几位字符串
题目欢迎大家补充,

我贴贴我的代码

package com.letcode;

import java.util.*;

public class Comparedemo {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int a=Integer.parseInt(sc.nextLine());
        int b=Integer.parseInt(sc.nextLine());
        HashMap<String,Word> map=new HashMap<>();
        TreeSet<Word> set=new TreeSet<>(new compare());//暂未用到
        TreeMap<Word,Integer> map1=new TreeMap<>(new compare());//暂未用到
        PriorityQueue<Word> q=new PriorityQueue<>(new compare());//暂未用到
        //(o1, o2) -> o1.k-o1.k>0 ? -1:1
        for(int i=0;i<2*a;i++){
            String [] w=sc.nextLine().split(" ");
            Word word;
            for(int j=0;j<w.length;j++) {
                if (!map.containsKey(w[j])) {
                    //若不存在该字符,则生成一个对象,若存在,则取出。
                    word = new Word();
                    word.name = w[j];
                    map.put(w[j], word);
                } else {
                    word = map.get(w[j]);
                }
                word.setK();
                if (i % 2 == 0) {
                    //处理标题行
                    word.setK1();
                    if (word.getI1() == -1) {
                        word.setI1(j);
                    }
                } else {
                    //处理正文
                    word.setK2();
                    if (word.getI2() == -1) {
                        word.setI2(j);
                    }
                }
            }
        }
        for(String e:map.keySet()){
            set.add(map.get(e));
            map1.put(map.get(e),map.get(e).k);
            q.offer(map.get(e));
        }
        for(int i=0;i<b;i++){
            System.out.println(set.pollFirst().toString());
        }
    }
    static class Word{
        String name;
        int k=0;//该词出现的总数
        int i1=-1;//该词在标题行首次出现的位置,如标题行没有,默认-1;
        int k1=0;//标题行出现的次数
        int i2=-1;//在正文中首次出现的位置
        int k2=0;//正文中出现的次数
        public String toString(){
            //toString
            return this.name;
        }
        public void setK() {
            //设置出现总次数
            this.k++;
        }
        public int getI1() {
            return i1;
        }
        public void setI1(int i1) {
            this.i1 = i1;
        }
        public void setK1() {
            this.k1 ++;
        }
        public int getI2() {
            return i2;
        }
        public void setI2(int i2) {
            this.i2 = i2;
        }
        public void setK2() {
            this.k2 ++;
        }
    }
    static class compare implements Comparator<Word>{
        @Override
        //比较器
        public int compare(Word o1, Word o2) {
            if(o1.k !=o2.k){
                return o2.k-o1.k;
                //返回总次数大的
            }else{
                if(o1.k1!=o2.k1){
                    //返回标题行次数大的
                    return o2.k1-o1.k1;
                }else{
                    if(o1.k2!=o2.k2){
                        //返回正文行出现次数大的
                        return o2.k2- o1.k2;
                    }else{
                        if(o1.i1!=o2.i1){
//                            返回标题位置出现靠前的
                            return o1.i1-o2.i1;
                        }else{
                            if(o1.i2!=o2.i2){
                                //返回正文出现靠前的
                                return o1.i2-o2.i2;
                            }else {
                                //默认返回字符小的在前。
                                return -1;
                            }
                        }
                    }
                }
            }
        }
    }
}
/*
    输入
    2
    5
    xin wde de
    we e ded dedlk dlkn de d xinx nddk dedkjklnd ded de xinguan xinahun xin xisd xin d dindeid dejeb
    fire ef in de
    dnw de fire de ff defe e ef e fe e fe esd de d edsd de edi f

    2
    3
    a b
    c d a d
    a c
    d c d c

    2
    5
    we in wei
    in sun in sun sun in we in
    sun io we we
    wei du sun we w in sun e ei ie ei


    * */
#笔试题目##华为#
全部评论
我第一题写出来一直是答案错误,然后检查了很久才发现是最后一位输出没有空格,但是由于最后一位看不出来,改了好久
3 回复 分享
发布于 2022-04-08 16:40
哎 不说了,第一题直接心态炸裂,第二题输入输出也没搞好
1 回复 分享
发布于 2022-04-07 22:44
都社招了? ~~~ ~~~
点赞 回复 分享
发布于 2022-05-09 14:14
华为南京、东莞、北京研究所OD岗位招聘,小伙伴们可以看过来~抓紧私信我姓名联系方式 【招聘要求】 1、统招全日制本科及以上学历,计算机、电子、通信等相关专业 2、工作地点:南京、东莞、北京 3、掌握Java、Python、C/C++、JS等主流开发语言中的一种 【内推优势】 1)已经成功内推多人,入职率很高哦,待遇15-30,15薪 2)通过我内推投递岗位,简历可获得优先筛选,可以帮助查询内推进度,有需要可以给到你一些面试建议哈! 注意,OD是社招岗位,抓紧私信我姓名联系方式
点赞 回复 分享
发布于 2022-05-09 14:11
咋零分啊哥 你都写出来了
点赞 回复 分享
发布于 2022-04-07 22:11

相关推荐

不愿透露姓名的神秘牛友
05-29 22:21
Offer1:小马智行,深圳,测试开发工程师,17.0k*16.0,Offer2:追觅科技,深圳,嵌入式工程师,18.0k*15.0,
嵌软狗都不学:各位base深圳的同事,作为也是并肩作战的一员,今天想站在管理视角,和大家开诚布公地聊一聊:从近几个月的上下班数据对比看来,我们发现一个明显的差异:深圳同事的在岗时间普遍比苏州同事短。很多深圳同事早上9点之后才到公司,晚上不到 20 点就下班了;而总部那边,20点半甚至 22 点后还有不少同事在办公室忙碌,特别是研发团队,加班更是常态。相信去过苏州的同事,对这种场景都不陌生。我很好奇,这是因为苏州工作任务太重还是咱们深圳同事效率真的高到能在更短时间内完成工作?MOVA在深圳成立分公司是为了吸引更优秀的人才贡献更多更高质的价值,公司管理层给我反馈的是深圳招到的多是行业的专家大拿,大部分都是薪资比苏州高的,而且我们办公的租金等也远高于苏州的..MOVA虽脱胎于强壮的集团母体不久,各业务板块尚未实现全面盈利,虽说公司管理层目光长远,不纠结当下的人才投入,但行业内的普遍标准是,员工创造的价值要达到公司雇佣成本的 15 倍以上。大家不妨自我审视一下,自己是否达到了这个标准?如果是抱着划水、按时打卡走人拿毛爷爷的心态那不适合来MOVA,那样过下去不但自己过得尴尬也会影响MOVA这个大船的攻城略地的速度.我并非鼓励大家盲目加班,而是倡导高效工作,拒绝无效忙碌,不要让项目进度因低效受影响,也别把精力浪费在和苏州同事拼打卡时长上,提倡更高的人效比;考虑到两地地域和交通差异,相信大家会找最适合自己发挥的工作方式(比如按时下班后1小时到家晚饭后继续未竟工作等..)大家在遵守公司规章的情况下尽情地体现自己的能力价值,为MOV!和深圳公司争光我们在这边才能更安心更有信心的工作下去;请客BU长、名部门长、项目管理和各业务单元负责人,全面梳理团队情况,及时评估成员工作负荷与成果质量,坚决清退划水害虫痕疫,践行公司价值观,相互监督,防止管理漏洞及渎职。感谢人家的理解,也请人家多担待我的直言不讳……
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
7
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务