华为OD机考-C卷

文章目录

  • 攀登者问题
  • 停车场
  • 最短路径

攀登者问题

24/03/09 20:50~23:10

攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。登山者想要知道一张地图中有多少座山峰。

例如[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0], 代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5和8,9,10,11,12,13,最高峰高度分别为 4,3。最高峰位置分别为3,10。

一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。

    /**
     * 返回地图中山峰的数量
     *
     * @param hill_map int整型一维数组 地图数组(长度大于1)
     * @return int整型
     */
    public int count_peaks(int[] hill_map) {
        // write code here 双指针
        int result = 0;
        if (hill_map.length == 0) {
            return result;
        } else if (hill_map.length == 1) {
            return 1;
        }
        for (int i = 0; i < hill_map.length; i++) {
            if (i > 0 && i < hill_map.length - 1) {
                // 处理非边界元素
                if (hill_map[i] > hill_map[i - 1] && hill_map[i] > hill_map[i + 1]) {
                    result++;
                }
            } else if (i == 0 && hill_map[i] > hill_map[i + 1]) {
            	// 处理左边界元素
                result++;
            } else if (i == hill_map.length - 1 && hill_map[i] > hill_map[i - 1]) {
	            // 处理右边界元素
                result++;
            }
        }
        return result;
    }
// 100%

停车场

停车场有一横排车位,0代表没有停车,1代表有车。至少停了一辆车在车位上,也至少有一个空位没有停车为了防剐蹭,需为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此时的最大距离。

  • 特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。
  • 车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3),统计停车场最少可以停多少辆车,返回具体的数目。
    输入描述
    1.一个用半角逗号分割的停车标识字符串,停车标识为0或1,0为空位,1为已停车。
    2.停车位最多100个。
    输出描述
    最少可以停多少辆车

eg1:

  • 输入 1,0,1
  • 输出 2
  • 说明 1个小车占第1个车位,第二个车位空,1个小车占第3个车位,最少有两辆车

eg2:

  • 输入 1,1,0,0,1,1,1,0,1
  • 输出 3
  • 说明 1个货车占第1、2个车位;第3、4个车位空;1个卡车占第5、6、7个车位;第8个车位空;1个小车占第9个车位;最少3辆车
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String carsLine = in.nextLine();
        int[] cars = new int[0];
        String[] split = carsLine.split(",");
        if (split.length > 0) {
            cars = new int[split.length];
            for (int i = 0; i < split.length; i++) {
                if (Objects.equals(split[i], "0") || Objects.equals(split[i], "1")) {
                    cars[i] = Integer.parseInt(split[i]);
                }
            }
        }
        int i = parkingCount(cars);
        System.out.println(i);
    }
    
    public static int parkingCount(int[] car) {
        int result = 0;
        int count = 0;
        for (int i = 0; i < car.length; i++) {
            if (car[i] == 1) {
            	// 记录停车位大小
                count++;
                if (count == 1) {
                	// 停车位大小为1,就可以停一辆车
                    result++;
                } else if (count == 3) {
                	// 停车位大小为3,到达最大车位,需要重新统计。
                    count = 0;
                }
            } else {
            	// 没有连续车位,停车位大小归0
                count = 0;
            }
        }
        return result;
    }
// 100%

最短路径

给定两个字符串,分别为字符串A与字符串B。例如A字符串为ABCABBA,B字符串为CBABAC。可以得到m*n的二维数组,定义原点为(0,0),终点为(m,n),水平与垂直的每一条边距离为1,从原点(0,0)到(0,A)为水平边,距离为1,从(0,A)到(A,C)为垂直边,距离为1; 假设两个字符串同一位置的两个字符相同则可以作一个斜边、如(A.C)到.B)最短距离为斜边,距离同样为1。作出所有的斜边,则有(0.0)到(B.B)的距离为 1个水平边+1个垂直边+1个斜边 =3。
根据定义可知,原点到终点的最短距离路径如下图红线标记,最短距离为9;
路径为(0,0)->(A,0)->(A,C)->(B,B)->(C,B)->(A,A)->(B,B)->(B,B)->(A,A)->(A,C)

在这里插入图片描述
19% 没做出来

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软考】单元测试

目录 1. 概念2. 测试内容2.1 说明2.2 模块接口2.3 局部数据结构2.4 重要的执行路径 3. 测试过程2.1 说明2.2 单元测试环境图2.3 驱动模块2.4 桩模块 4. 模块接口测试与局部数据结构测试的区别 1. 概念 1.单元测试也称为模块测试&#xff0c;在模块编写完成且无编译错误后就可以…

C++ 11 新特性线程mutex互斥访问共享变量

一.互斥锁介绍 互斥锁&#xff08;mutex&#xff09;是C11中用于保护共享资源的一种同步机制&#xff0c;其原理基于以下关键点&#xff1a; 独占所有权&#xff1a;std::mutex提供独占所有权的特性&#xff0c;即在同一时间只有一个线程能够拥有互斥锁。当一个线程拥有锁时&am…

嵌入式 Linux 学习

在学习嵌入式 Linux 之前&#xff0c;我们先来了解一下嵌入式 Linux 有哪些东西。 1. 嵌入式 Linux 的组成 嵌入式 Linux 系统&#xff0c;就相当于一套完整的 PC 软件系统。 无论你是 Linux 电脑还是 windows 电脑&#xff0c;它们在软件方面的组成都是类似的。 我们一开电…

使用大型语言模型进行实体提取

原文地址&#xff1a;Using A Large Language Model For Entity Extraction LLM 能否比传统 NLP 方法更好地提取实体&#xff1f; 2022 年 7 月 12 日 Large Language Models for Generative Information Extraction: A Survey 实体简介 使用Co:here大型语言模型。 实体可以被视…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景&#xff1a;开发者A&#xff0c;开发者B在同一个项目协同开发&#xff0c;修改同一个代码文件。开发者A在Win10下&#xff0c;开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…

数据库-DQL

基本查询 -- 查询id&#xff0c;name,creatdata select id,name,creatdata from tb_emp;-- 查询所有值 select id, user, name, gender, image, mima, zhiwei, creatdata from tb_emp;select *from tb_emp;-- 不推荐-- 查询id creatdata&#xff0c;并起一个别名 select id ID…

部署LVS负载均衡集群架构

目录 一、ipvsadm 工具 二、NAT模式下部署LVS负载均衡 1、部署NFS共享存储服务器 1.1 安装NFS软件 1.2 新建共享目录和站点文件 1.3 设置共享策略 2、部署节点服务器1 2.1 安装并启动nginx软件 2.2 挂载共享目录到网页站点目录 2.3 修改网关 3、部署节点服务器2 3.…

【国产MCU】-CH32V307-SysTick中断与延时功能实现

SysTick中断与延时功能实现 文章目录 SysTick中断与延时功能实现1、SysTick介绍2、SysTick中断使用3、SysTick实现微秒和毫秒延时功能CH32V307的RISC-V内核控制器自带的一个64位可选递增或递减的计数器,用于产生SYSTICK异常(异常号:15),可专用于实时操作系统,为系统提供“…

ChatGPT预训练的奥秘:大规模数据、Transformer架构与自回归学习【文末送书-31】

文章目录 ChatGPT原理与架构ChatGPT的预训练ChatGPT的迁移学习ChatGPT的中间件编程 ChatGPT原理与架构&#xff1a;大模型的预训练、迁移和中间件编程【文末送书-31】 ChatGPT原理与架构 近年来&#xff0c;人工智能领域取得了巨大的进展&#xff0c;其中自然语言处理&#xf…

算法(递归)黑盒思想

递归vs搜索vs回溯 递归的时候其实就是在搜索&#xff0c;递归返回的时候其实就是在回溯 常见的二叉树的题目基本都用到了递归&#xff1a; 求二叉树节点个数&#xff08;后序遍历&#xff09; int BinaryTreeSize(BTNode* root) {return root NULL ? 0 : BinaryTreeSize(roo…

【学习】DLA (Deep Layer Aggregation)

本研究是有由UC Berkeley的Trevor Darrell组发表于2018年CVPR。因为&#xff0c;工作中应用到CenterNet&#xff0c;文章中使用了DLA作为backbone&#xff0c;能够以较高的速度完成推理并维持较高的AP。 DLA文章&#xff1a;论文 DLA 在实际操作中&#xff0c;常常将高级特征…

Orange3数据预处理(转换器组件)

该组件接收数据&#xff0c;然后重新应用之前在模板数据上执行的转换。 这些转换包括选择变量的子集以及从数据中出现的其他变量计算新的变量&#xff0c; 例如&#xff0c;离散化、特征构建、主成分分析&#xff08;PCA&#xff09;等。 在Orange3中&#xff0c;描述的这个组件…

浏览器与Node.js事件循环:异同点及工作原理

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

linuxOPS基础_linux系统注意事项

Linux严格区分大小写 Linux 和Windows不同&#xff0c;Linux严格区分大小写的&#xff0c;包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如&#xff0c;Win7 系统桌面上有文件夹叫做Test&#xff0c;当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…

架构学习总结:企业架构=业务+数据+技术+应用架构

最近再次研读DAMA数据管理知识体系,结合工作对什么是企业架构?如何开展企业架构设计工作有一些新的认识,供大家参考。企业架构包括企业的业务架构、数据架构、技术架构和应用架构,要想做好企业的信息化数字化建设规划,这四个架构都不可缺少,这四个方面的内容共同组成了企…

【C语言】字符指针

在指针的类型中我们知道有一种指针类型为字符指针char* 一般使用&#xff1a; int main() { char ch w; char *pc &ch; *pc w; return 0; } 还有一种使用方式&#xff0c;如下&#xff1a; int main() { const char* pstr "hello bit.";//这⾥是把⼀个字…

dubbo 总结

1.dubbon 基本使用 2.dubbon 的高级特性 这个也不算啥高级特性&#xff0c;图形用户界面最没水平 负载均衡 负载均衡 Random 随机访问 RoundRoubin 轮询按权重 LeastOne 根据活跃度调用

华为OD机试C卷“拉满货的卡车”Java编程解答

描述 示例 算法思路1 答案1 import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int wa scanner.nextInt();int wb scanner.nextInt();int wt scanner.nextInt();int pa scanner.nextInt();int pb …

mysql的安装启动

下载 2.解压后放在某个目录下&#xff1a; 3.修改系统变量 4.修改配置文件 &#xff08;创建一个ini文件放在解压后的目录下&#xff09; 内容如下 5.初始化mysql 1.用管理员模式下输入&#xff1a; mysqld --initialize --console C:\WINDOWS\system32>mysqld --initia…

Qt 拖动事件

文章目录 1 自定义控件 TextEdit2 实现打开文件功能3 实现鼠标滚轮放大字体 QEvent::DragEnter 当拖动文件进入到窗口/控件中时&#xff0c;触发该事件&#xff0c;它对应的子类是QDragEnterEvent QEvent::DragLeave 当拖动文件离开窗口/控件时&#xff0c;触发该事件&#xff…