Java实现 华为2016校园招聘上机笔试题(牛客网能不能用点心......题目不完整、不清楚)

news2024/11/15 14:06:41

文章目录

  • 最高分是多少
  • 简单错误记录
  • 扑克牌大小


牛客网…能不能用点心,题目根本不完整,是不是包含多组输入也不说,还是百度了别人的博客,才看到的完整题目,无语了…

最高分是多少

在这里插入图片描述

输入都不完整:以下是看别人的博客,补充的输入说明

输入描述

输入包括多组测试数据。
每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
学生ID编号从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为’Q’的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。

输入样例

5 7
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 4 5
U 2 9
Q 1 5

输出样例

5
6
5
9

通过代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        //N 学生数量
        //M 操作次数
        int N, M;
        String q;
        int a, b;

        Scanner in = new Scanner(System.in);
		
		//多组输入
        while (in.hasNext()) {

            N = in.nextInt();
            M = in.nextInt();
            int[] score = new int[N + 1];

            for (int i = 1; i <= N; i++) {
                score[i] = in.nextInt();
            }

            for (int i = 1; i <= M; i++) {
                q = in.next();
                a = in.nextInt();
                b = in.nextInt();

                if (q.equals("U")) {
                    score[a] = b;
                } else if (q.equals("Q")) {
                    if (a >= b) {
                        int tmp = a;
                        a = b;
                        b = tmp;
                    }
                    int maxValue = score[a];
                    for (int j = a + 1; j <= b; j++) {
                        if (score[j] > maxValue) {
                            maxValue = score[j];
                        }
                    }
                    System.out.println(maxValue);
                }
            }
        }
    }
}

简单错误记录

在这里插入图片描述
在这里插入图片描述

本题需要注意的有:

  • 最多记录8条错误,超出8条,只输出前8条
  • 文件名和行号相同(不管目录),只记录一条,错误计数加1
  • 超过16个字符的文件名称,只记录最后16个字符
    • 如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并
  • 输入的文件可能带路径
  • 记录文件名称,不能带路径
  • 按照数目从多到少排序,数目相同情况下按照输入第一次出现顺序排序

需要解决的有:

  • 获取文件名
  • 从多到少排序,相同数目的话,按照添加的先后顺序排列

解决方法:

  • 获取文件名
    • 首先,从后往前,找到反斜杠\出现的位置,从它后面一位开始截取,就可以获得文件名
  • 从多到少排序,相同数目,则按照添加的先后顺序
    • 为了能够记录添加的顺序,则使用LinkedHashMap
    • 将map.entrySet放入arrayList中,使用Collections.sort创建Comparator的匿名对象,重写排序方法
import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        String line;
        Map<String, Integer> map = new LinkedHashMap<>();

        while (in.hasNext()) {
            line = in.nextLine();
            if (line == null || "".equals(line)) {
                break;
            }
            line = line.substring(line.lastIndexOf("\\") + 1);
            map.put(line, map.getOrDefault(line, 0) + 1);
        }

        List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o2.getValue() - o1.getValue();
            }
        });


        for (int i = 0; i < 8 && i < list.size(); i++) {
            String[] split = list.get(i).getKey().split(" ");
            if (split[0].length() > 16) {
                split[0] = split[0].substring(split[0].length() - 16);
            }
            System.out.println(split[0] + " " + split[1] + " " + list.get(i).getValue());
        }

    }
}

扑克牌大小

在这里插入图片描述
在这里插入图片描述
下面梳理一下题目中的细节,以及说明一下解题思路

  • 输入的牌可能是:个子、对子、顺子(连续5张)、三个、炸弹(4个),对王,这五种类型
  • 比较两手牌,如果无法比较,则输出ERROR
    • 可以比较的牌有哪些?
    • 个子和个子,对子和对子,顺子和顺子,三个和三个,炸弹和对王可以与任何一种类型比较
  • 在扑克牌中,从小到大的顺序为 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER,直接进行字符串的比较感觉比较复杂,我是将这些值作为键存在map中,并给它们赋予相应的整数值来表示大小关系
  • 解题过程中,首先判断两幅牌的长度一样
    • 例如4 4 4 4-joker JOKER,这两副牌长度不一样
    • 3 3-joker JOKER,这两副牌长度一样
  • 对于长度不一样的牌,则需要判断左边或者右边是否有对王或炸弹
    • 如果有对王,则输出对王
    • 如果没有对王
      • 如果有炸弹,则输出炸弹
      • 否则,输出ERROR
  • 对于长度一样的牌,则根据键,找到值,比较大小即可
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        Map<String, Integer> map = new HashMap<>();
        map.put("3", 1);
        map.put("4", 2);
        map.put("5", 3);
        map.put("6", 4);
        map.put("7", 5);
        map.put("8", 6);
        map.put("9", 7);
        map.put("10", 8);
        map.put("J", 9);
        map.put("Q", 10);
        map.put("K", 11);
        map.put("A", 12);
        map.put("2", 13);
        map.put("joker", 14);
        map.put("JOKER", 15);

        String line;
        while (in.hasNext()) {
            line = in.nextLine();
            if ("".equals(line) || line == null) {
                break;
            }
            String[] split = line.split("-");
            String[] left = split[0].split(" ");
            String[] right = split[1].split(" ");

            if (left.length != right.length) {
                if ("joker".equals(left[0])) {
                    print(left);
                } else if ("joker".equals(right[0])) {
                    print(right);
                } else if (left.length == 4) {
                    print(left);
                } else if (right.length == 4) {
                    print(right);
                } else {
                    System.out.println("ERROR");
                }
            } else {
                if (map.get(left[0]) > map.get(right[0])) {
                    print(left);
                } else {
                    print(right);
                }
            }
        }
    }

    private static void print(String[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (i != 0) {
                System.out.print(" ");
            }
            System.out.print(arr[i]);
        }
        System.out.println();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/355352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爆红的chatgpt是如何诞生的?程序员要如何使用

大家好&#xff0c;小编来为大家解答以下问题爆红的chatgpt是如何诞生的?&#xff0c;一个有趣的事情&#xff0c;一个有趣的事情程序员要如何使用&#xff0c;现在让我们一起来看看吧&#xff01; 1、chatGPT是哪个公司做的&#xff1f; Chatgpt &#xff08;中文&#xff1…

Ubuntu 20 安装包下载(清华镜像)

Ubuntu 20 安装包下载在国内推荐使用清华大学镜像 清华镜像地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ 在搜索框中输入Ubuntu&#xff0c;然后点击Ubuntu -release&#xff0c;这里面有近几年的Ubuntu镜像 点击你想下载的版本&#xff0c;我选择的是20.0413点击…

tauri 打包现有React 项目(window)

注意事项&#xff1a;1.此项目没有路由&#xff0c;2.没有 API请求 环境配置 请看文档 tauri 文档 第一步&#xff1a;在需要打包的项目根目录执行命令 npm install --save-dev tauri-apps/cli第二步&#xff1a;在 package.json scripts 中添加 tauri "scripts": …

使用canvas实现腾讯自选股K线图

前言 平常为了方便看行情就会打开小程序看走势&#xff0c;作为一个开发在看腾讯自选股的日K时就会在想这个玩意是怎么弄的呢&#xff1f;下面我就用h5来实现一个最简K线图。 K线的构成以及画法 K线又称阴阳线、棒线、红黑线或蜡烛线。K线是一条柱状的线条&#xff0c;由实体…

[数据结构]---八大经典排序算法详解

&#x1f427;作者主页&#xff1a;king&南星 &#x1f3f0;专栏链接&#xff1a;c 文章目录一、八大排序算法复杂度对比二、基于比较的排序算法1.冒泡排序2.选择排序3.插入排序4.希尔排序5.直观感受四种算法的时间复杂度三、基于非比较的排序算法1.基数排序2.箱(桶)排序四…

MySQL 实战记录篇

记录一下在MySQL实战中简单的笔记 MySQL的逻辑架构&#xff0c;一条查询语句是怎么执行的&#xff1f; MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层 简单的架构图&#xff1a; 连接器&#xff1a;用来和mysql服务器建立连接&#xff0c;tcp三次握手&#xff0…

SpringCloud系列(十三)[分布式搜索引擎篇] - ElasticSearch 的概念及 Centos 7 下详细安装步骤

打开淘宝, 搜索 狂飙 会出现各种价格有关狂飙的书籍, 当然也有高启强同款的孙子兵法!!! 如下图所示: 那么面对海量的数据, 如何快速且准确的找到我们想要的内容呢? 淘宝界面已经可以按照综合排序 / 销量 / 信用 / 价格等进行筛选, 是如何做到的呢? ElasticSearch 11 Elastic…

实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?

上一节课,我们做了一些理论知识的铺垫性讲解,讲到了两种开发模式,基于贫血模型的传统开发模式,以及基于充血模型的DDD开发模式。今天&#xff0c;我们正式进入实战环节&#xff0c;看如何分别用这两种开发模式&#xff0c;设计实现一个钱包系统。话不多说&#xff0c;让我们正式…

python自制PDF转换.PNG格式图片(按每页生成图片完整源码)小工具!

使用PyQt5应用程序制作PDF转换成图片的小工具&#xff0c;可以导入PDF文档后一键生成对应的PNG图片。 PDF图片转换小工具使用的中间件&#xff1a; python版本&#xff1a;3.6.8 UI应用版本&#xff1a;PyQt5 PDF文件操作非标准库&#xff1a;PyPDF2 PNG图片生成库&#xff1…

VINS-Mono/Fusion与OpenCV去畸变对比

VINS中没有直接使用opencv的去畸变函数&#xff0c;而是自己编写了迭代函数完成去畸变操作&#xff0c;主要是为了加快去畸变计算速度 本文对二者的结果精度和耗时进行了对比 VINS-Mono/Fusion与OpenCV去畸变对比1 去畸变原理2 代码实现2.1 OpenCV去畸变2.2 VINS去畸变3 二者对…

压缩20M文件从30秒到1秒的优化过程

压缩20M文件从30秒到1秒的优化过程 有一个需求需要将前端传过来的10张照片&#xff0c;然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的&#xff0c;所以就直接上网找了一个例子改了一下用了&#xff0c;改完以后也能使用&#xff0…

(考研湖科大教书匠计算机网络)第四章网络层-第九节:虚拟专用网与网络地址转换

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;虚拟专用网&#xff08;1&#xff09;虚拟专用网是什么&#xff08;2&#xff09;虚拟专用网如何分配IP地址&#xff08;3&#xff09;例子&#x…

【JAVA八股文】框架相关

框架相关1. Spring refresh 流程2. Spring bean 生命周期3. Spring bean 循环依赖解决 set 循环依赖的原理4. Spring 事务失效5. Spring MVC 执行流程6. Spring 注解7. SpringBoot 自动配置原理8. Spring 中的设计模式1. Spring refresh 流程 Spring refresh 概述 refresh 是…

深度学习(1)神经网络基础

要学习深度学习&#xff0c;那么首先要熟悉神经网络&#xff08;Neural Networks&#xff0c;简称NN&#xff09;的一些基本概念。当然&#xff0c;这里所说的神经网络不是生物学的神经网络&#xff0c;我们将其称之为人工神经网络&#xff08;Artificial Neural Networks&…

海豚调度2.0.5 星环驱动包踩坑(二)worker服务正常、zk注册正常,心跳时间不更新,也不执行任务,任务一直处于执行中状态

目录背景问题记录20230206 发现服务启动失败20230215 有一台worker不执行作业&#xff0c;其它均正常问题解决问题思考背景 之前分享过海豚调度2.0.5连接星环库使用记录&#xff0c;后来说存储过程又出现了超时的情况&#xff0c;原因是因为调度星环驱动包和生产星环库驱动包不…

ES 异常写入解决流程

问题说明 一天下午&#xff0c;在北京客户现场的同学反馈我们elasticsearch出现的大量的异常&#xff0c;他反馈说他使用多线程写入大量数据到elasticsearch集群时&#xff0c;隔一段时间之后就会出现CircuitBreakingException&#xff0c;多尝试几次后&#xff0c;他就把问题反…

基于微信小程序的微信社团小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器…

JavaEE|网络原理·上

文章目录一、网络发展史1.独立模式2.网络互联3.局域网&#xff08;LAN&#xff09;4.广域网&#xff08;WAN&#xff09;局域网组网的方式①基于网线直连②基于集线器&#xff08;hub&#xff09;组建③基于交换机(switch)组建④基于交换机和路由器组建二、网络通信基础1.ip地址…

Winform控件开发(14)——NotifyIcon(史上最全)

前言: 先看个气泡提示框的效果: 代码如下: 在一个button中注册click事件,当我们点击button1时,就能显示气泡 private void button1_Click(object sender, EventArgs e){notifyIcon1.Visible = true;notifyIcon1

【论文速递】ICLR2018 - 用于小样本语义分割的条件网络

【论文速递】ICLR2018 - 用于小样本语义分割的条件网络 【论文原文】&#xff1a;CONDITIONAL NETWORKS FOR FEW-SHOT SEMANTIC SEGMENTATION&#xff08;Workshop track - ICLR 2018&#xff09; 【作者信息】&#xff1a;Kate Rakelly Evan Shelhamer Trevor Darrell Alexe…