华为机试2016

2023-11-03

[编程题]最高分是多少

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

输入描述:

输入包括多组测试数据。 每组输入第一行是两个正整数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。

 

输出描述:

对于每一次询问操作,在一行里面输出最高成绩.

示例1

输入

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

用例2:

17 9
57 6 6 49 44 38 12 41 52 43 57 21 2 20 1 30 39
Q 3 9
U 9 34
Q 14 7
U 8 78
U 5 79
Q 1 7
Q 11 4
Q 12 6
Q 13 4

对应输出应该为:
52
57
79
79
78
79
import java.util.*;

/**
 * 此题坑人的地方有两处:
 * 1,不止输入一组n m ;
 * 2,AB之间,可能A>B
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int N = sc.nextInt();
            int M = sc.nextInt();

            int[] scores = new int[N + 1];
            scores[0] = 0;
            for (int i = 1; i <= N; i++) {
                scores[i] = sc.nextInt();
            }

            //读入M条操作
            for (int i = 0; i < M; i++) {
                String c = sc.next();

                int A = sc.nextInt();
                int B = sc.nextInt();

                if (c.equals("Q")) { //询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
                    //注意A可能大于B。所以要更新查找区间的起点和终点
                    int begin=Math.min(A,B);
                    int end=Math.max(A,B);
                    int max = scores[begin];

                    for (int j = begin; j <= end; j++) {
                        if (scores[j] > max) {
                            max = scores[j];
                        }
                    }
                    System.out.println(max);

                } else if (c.equals("U")) { //把ID为A的学生的成绩更改为B。
                    scores[A] = B;
                }
            }

        }
    }
}

 

编程题2

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并)
2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并)
3.输入的文件可能带路径,记录文件名称不能带路径

 

输入描述:

一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。

    文件路径为windows格式

    如:E:\V1R2\product\fpgadrive.c 1325

输出描述:

将所有的记录统计并将结果输出,格式:文件名代码行数数目,一个空格隔开,如: fpgadrive.c 1325 1
结果根据数目从多到少排序,数目相同的情况下,按照输入第一次出现顺序排序。
如果超过8条记录,则只输出前8条记录.
如果文件名的长度超过16个字符,则只输出后16个字符


示例1

输入

E:\V1R2\product\fpgadrive.c 1325

输出

fpgadrive.c 1325 1

import java.util.*;

//E:\V1R2\product\fpgadrive.c 1325
//按Ctrl+D  结束循环
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<String, Integer> map = new LinkedHashMap<String, Integer>();
        String key;
        String filename;

        while (sc.hasNextLine()) {
            String inputStr = sc.nextLine();

            if (inputStr.equals("")) {
                break;
            }

            String[] str = inputStr.split(" ");

            //注意:\ 是转义字符
            int lastIndex=str[0].lastIndexOf('\\');// 找不到最后一个“\”,会返回-1,说明只有文件名,没有路径
            filename=lastIndex<0 ? str[0]: str[0].substring(lastIndex+1); //从路径中,截取出文件名
            key = filename + " " + str[1];

            if (map.containsKey(key)) {
                map.put(key, map.get(key) + 1);
            } else {
                map.put(key, 1);
            }
        }


        //对记录进行排序
        List<Map.Entry<String, Integer>> list = new LinkedList<Map.Entry<String, Integer>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            /**
             *  结果根据数目从多到少排序,数目相同的情况下,按照输入第一次出现顺序排序。
             * @param o1
             * @param o2
             * @return
             */
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return (o2.getValue() - o1.getValue()) == 0 ? (o1.getValue() - o2.getValue()) : (o2.getValue() - o1.getValue());
            }
        });

        //只打印 出现次数最多的8条
        int count = 0;
        for (Map.Entry<String, Integer> entry : list) {
            if (count < 8) {
                String[] str = entry.getKey().split(" ");

                String resultName = str[0].length() > 16 ? str[0].substring(str[0].length() - 16) : str[0];
                String lineNum = str[1];
                System.out.println(resultName + " " + lineNum + " " + entry.getValue());
            } else {
                break;
            }
            ++count; //遍历有序map的时候,配合着count计数
        }
    }
}

 

或|,点.,加+,乘*,在字符串中出现时,如果这个字符串需要被split,则split时候,需要在前面加两个反斜杠。

      与&,在split时候,不需要转义。

 

在Java中,不管是String.split(),还是正则表达式,有一些特殊字符需要转义

需要转义的字符有:

\

$

*

+

.

?

^

|

(

)

[

]

{

}

 

       

转义方法为字符前面加上"\\",这样在split、replaceAll时就不会报错了;

但是有一点需要注意,String.contains()方法是不需要转义的。
 

1》如果用“.”作为分隔的话,必须是如下写法 String.split("\\."),这样才能正确的分隔开。不能用String.split(".");

2》如果用“|”作为分隔的话,必须是如下写法 String.split("\\|"),这样才能正确的分隔开。不能用String.split("|");

3》如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如 “acount=?and uu =? or n=?”,把三个都分隔出来可以用String.split("and|or");

4》如果想在字符串中使用"\"字符,则也需要转义。首先要表达"aaaa\bbbb"这个串。就应该用"aaaa\\bbbb"。

如果要分隔,就应该用 String[] aa = "aaa\\bbb\\bccc".split("\\\\");  //用了四个斜杠。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为机试2016 的相关文章

  • Unable to build Cython components. Please make sure Cython is installed if the torch.hub

    在我使用torch hub的时候报了如下一个错误 解决方法 参考 https github com h5py h5py issues 535 先安装 h5py 再安装 Cython pip install h5py pip install
  • 概率论中高斯分布(正态分布)介绍及C++11中std::normal_distribution的使用

    高斯分布 最常用的分布是正态分布 normal distribution 也称为高斯分布 Gaussian distribution 正态分布N x 2 呈现经典的 钟形曲线 的形状 其中中心峰的x坐标由 给出 峰的宽度受 控制 正态分布由
  • c++ 提取字符串前面数字stoi和atoi

    stoi和atoi 包含在 include lt cstdlib gt 作用是将字符串转化为int型 区别是stoi的形参是string 而atoi的形参是char 注 只是将字符串前面是数字的部分提取出来 代码可以看这篇文章 https
  • ChatGPT无限卡Cloudflare 验证你是真人

    问题 我的情况是这样 在Chrome里 打开chatGPT的网页 会无限验证你是真人 打开无痕浏览页面可以正常登录 2023 04 20 更新 新的解决方案 github上有一个油猴脚本 KeepChatGPT 可以解决这个问题 至少目前我
  • 02Tcpdump命令详解-网络抓包工具

    1 概述 今天我们要介绍的是一款网络抓包工具tcpdump 重点讨论并介绍一些有用的命令及最佳实践 tcpdump是一个功能最强大 应用最广泛的命令行数据包嗅探器或包分析工具 用于抓取或过滤制定接口接受或发送的TCP IP数据包 tcmpd
  • 42-Docker-Docker命令详解-docker build

    Docker命令详解 docker build 前言 docker build 原理 语法格式 options说明 使用示例 前言 本篇来学习下制作docker镜像的命令 docker build docker build 原理 docke
  • 环境文件复制

    1 yaml复制 package com ybw yaml demo generate import com alibaba fastjson2 JSON import lombok extern slf4j Slf4j import or
  • linux android studio 快捷方式,Android Studio 使用小技巧和快捷键

    Android Studio 使用小技巧和快捷键 Published by xiaosixi on 2016年12月19日 1 书签 Bookmarks 描述 这是一个很有用的功能 让你可以在某处做个标记 书签 方便后面再跳转到此处 调用
  • 【论文速览】ICLR23 - 将图像视为一组点集 Image as Set of Points

    文章目录 研究背景 解决思路 部分实验效果 思考 参考资料 收录于ICLR2023 oral notable top 5 代码地址 https github com ma xu Context Cluster 研究背景 目前计算机视觉领域最
  • 循环代码模型构建方法

    循环结构是源代码程序的重要结构 然而即使是简单的循环程序 也很容易出错 循环中的很多错误往往需要执行多次或者在某些特定的情况下才能被发现 检测这些错误的代价很高 所以需要重点开展对软件循环代码的安全性分析研究 而对循环代码结构进行研究的重要
  • 2018年Android面试题含答案--适合中高级

    1 java中 和equals和hashCode的区别 基本数据类型的 比较的值相等 类的 比较的内存的地址 即是否是同一个对象 在不覆盖equals的情况下 同比较内存地址 原实现也为 如String等重写了equals方法 hashCo
  • 如何学会读论文?送你滑铁卢大学S. Keshav的三轮阅读法

    来源 专知 本文约3100字 建议阅读6分钟 本文为你介绍三轮阅读法 教你如何高效读论文 导读 读论文是从事科学研究与工程等必不可少环节 但是如何高效读论文却有一番讲究 滑铁卢大学S Keshav 撰写了 How to Read a Pap
  • 80 后女程序员拒当「码农」:“转行小说家后,我用 AI 写了 16 本书!”

    省时查报告 专业 及时 全面的行研报告库 省时查方案 专业 及时 全面的营销策划方案库 免费下载 2023年8月份全网热门报告合集 ChatGPT提词示例 让你的ChatGPT聪明100倍 超百页干货资料 AI应用的难点 痛点与未来 202
  • 终止关闭服务端口号 8080为例

    Identify and stop the process that s listening on port 8080 or configure thi 当我们遇到服务器端口号被占用的时候 下一个服务器就带不开了 让人很是烦躁 下面猿猿总结
  • 【华为OD机试真题 python】事件推送【2022 Q4

    题目描述 事件推送 同一个数轴X上有两个点的集合A A1 A2 Am 和B B1 B2 Bn Ai和Bj均为正整数 A B已经按照从小到大排好序 A B均不为空 给定一个距离R 正整数 列出同时满足如下条件的所有 Ai Bj 数对 1 Ai
  • oracle单实例客户端连接的failover功能

    今天测试了一下单实例数据库客户端连接的failover功能 操作系统为red hat 5 5 root localhost cat etc issue Red Hat Enterprise Linux Server release 5 5
  • vue项目树状图的实现

    1 实现背景 项目需要直观的展示元素之间的关系 需要实现一个树状图 数据可视化可以用Echarts HighCharts 但是相关树状图的示例不够直观 且不美观 几种工具之间比较 选择了蚂蚁金服的G6来实现 在开发期间有树状图的示例 之后再

随机推荐

  • 快速排序基本思想及代码实现-史上最通俗易懂的

    来源 我是码农 转载请保留出处和链接 本文链接 http www 54manong com id 1236 1 算法思想 快速排序是C R A Hoare于1962年提出的一种划分交换排序 它采用了一种分治的策略 通常称其为分治法 Divi
  • MQTT遗愿(last will) paho.mqtt实现

    一 MQTT遗嘱 MQTT 可以设置遗嘱 客户端在连接Broker的时候将遗嘱内容 也是topic payload形式 遗嘱也有一个主题 发送给Broker并保存在Broker中 当客户端因为非正常原因断开与Broker的连接时 Broke
  • 进程的相概念(linux系统编程)

    什么是程序 什么是进程 有什么区别 程序是静态的概念 gcc xx x o pro 磁盘中生成的pro就是程序 进程是程序的一次运行活动 通俗的讲就是程序跑起来了 系统中就多了一个进程 在Linux里面怎么查看系统中有哪些进程 使用ps指令
  • linux的超级管理用户

    超级管理用户 也称为root用户 是Linux系统中最高权限用户 root用户具有完全控制系统的权限 可以执行任何操作 包括管理文件 修改配置 安装软件等 下面是root用户的用法大全 切换到root用户 在终端中输入以下命令 su roo
  • 青龙面板使用教程,以及安装

    1 青龙面板使用教程 以及安装 首先青龙面板是在docker里面的 我们要安装一个docker 我这里只有debian 11 安装的教程 如何在debian11上安装docker 知乎 这个文章不错了 按命令执行就好了 其他操作系统的 去网
  • K8S-11--prometheus--(监控基础/prometheus基础/grafana/promQL/exporter/cadvisor)

    一 监控基础 一 监控简介 监控模型 端监控 业务层监控 应用层监控 中间件监控 系统层监控 1 监控概述 web监控 打开速度 URL打开状态码 API接口可用性 业务监控 订单交易量 活跃用户量 支付量 中间件监控 数据库 redis
  • 跳出ping++退款的坑

    近期在项目的开发过程中 需要用到ping 的退款功能 由于使用的版本比官方提供的要低2个小版本 因此问题并不是很大 但是由于官方文档有些内容写的比较含蓄 因此遇到了一些问题 我们可以通过如下的方式来获取SDK的版本 gt gt gt imp
  • STM32开发环境配置相关问题记录

    1 编译时出现 error 35 error directive Please select first the target STM32F10x device used 解决方案 点选options for target 选择C C 在d
  • K8S deployment挂载

    Deployment部署文件 apiVersion apps v1 kind Deployment metadata annotations deployment kubernetes io revision 1 kubectl kuber
  • Spring Security认证成功后回跳(解决前后端分离下OAuth2认证成功回跳)

    前言 Spring Security 后面简称SS 用了很长时间了 但之前一直没注意到一个有趣的特性 直到最近弄前后端分离 在OAuth2提供者 github 认证后 需要跳回前端页面 前端页面和服务端不在同个域下 然后突然一般情况下 同域
  • 鸿蒙系统做服务器,鸿蒙升级第一夜服务器崩了,有人等到凌晨3点,称升级后内存变大...

    编 赵艳秋 6月2日晚间 华为宣布推出HarmonyOS 2 华为 百 款设备将陆续启动HarmonyOS 2升级 不少华为用户则经历了艰难的一夜 最大规模升级第一夜服务器崩了 有如五一小长假期间的在线购票系统12306 6月2日晚 因为太
  • 半径为r的均匀带电球体_放于真空中半径为R,带电量为q的均匀带电球体,求球内外各点电势分布...

    展开全部 当半径r 一个均匀带电的球壳 带电量为q 则e68a84e8a2ad62616964757a686964616f31333431353338对壳外部产生的场强为E q 4 r 内部场强为零 则以上均匀带电的球内半径为r处 电场强度
  • C语言删除字符串中某一指定字符

    include
  • Python数据挖掘和解析算法

    机器学习是计算机科学的一个分支 它利用过去的经验来学习并利用其知识来做出未来的决策 机器学习是计算机科学 工程和统计学的交叉点 机器学习的目标是概括一个可检测的模式或从给定的例子中创建一个未知的规则 机器学习领域的概述如下 监督学习 这是教
  • 11.3外汇黄金价格投资策略、期货原油最新价格布局及指导

    黄金消息面与技术面解析 消息面 周二 11月2日 国际金价持稳 在通胀压力不断增加以及对经济增长放缓的担忧之际 市场参与者等待美联储本周政策会议结果 美国物价和薪资涨幅正处于数十年来的高位 本周可能让美联储官员面临挑战 分析师预计 在央行收
  • STM32串口烧写程序

    STM32烧写注意 1 必须使用串口1烧写 2 烧写 BOOT0置1 BOOT1置0 运行 BOOT0置0 BOOT1置任意 3 使用FLYMCU烧写软件 4 NRST引脚电路设计成悬空 按键按下 拉低 步骤 1 买一根 TTL串口线分别把
  • 全国各省、市、区(sql语句)

    文章目录 一 省份 数据表 二 市 数据表 注意 因为到县sql语句太多文章限字数上传不全 所以一半放到了另外的一篇文章上 三 上部分区 县 数据表 四 中部分区 县 数据表 五 下部分区 县 数据表 六 在在下部分区 县 数据表 返回项目
  • 股票分析,利用线性回归实时预测股价,只需要提供股票代码即可爬取相应股票数据并建模

    这里参考了别人的代码 并引用了tushare模块中定义的接口自动获取了依据 股票代码来获取数据 此篇文章提供了 1 一个简单通过接口爬取csv数据的方法 2 一个处理csv数据的简单方法 3 依据数据进行特征提取建立简单的股价预测模型 如下
  • 关于Pygame运行无响应问题的办法(已解决)

    目录 pygame程序运行时需要初始化 在关闭运行页面的时候无响应 pygame程序运行时需要初始化 如下代码运行后无反应 import sys import pygame size width height 600 400 screen
  • 华为机试2016

    编程题 最高分是多少 老师想知道从某某同学当中 分数最高的是多少 现在请你编程模拟老师的询问 当然 老师有时候需要更新某位同学的成绩 输入描述 输入包括多组测试数据 每组输入第一行是两个正整数N和M 0 lt N lt 30000 0 lt