华为机试 - ABR 车路协同场景

news2025/1/13 13:35:09

目录

题目描述

输入描述

输出描述

用例

题目解析

算法源码


题目描述

数轴×有两个点的序列 A={A1, A2, …, Am}和 B={B1, B2, ..., Bn}, Ai 和 Bj 均为正整数, A、 B 已经从小到大排好序, A、 B 均肯定不为空,

给定一个距离 R(正整数),列出同时满足如下条件的所有(Ai, Bj)数对

条件:

  1. Ai <= Bj
  2. Ai,Bj 距离小于等于 R,但如果 Ai 找不到 R 范围内的 Bj,则列出距它最近的 1 个 Bj,当然此种情况仍然要满足 1,

但如果仍然找不到,就丢弃 Ai。

原型:

车路协同场景,一条路上发生了有很多事件( A),要通过很多路测设备( B)广播给路上的车,需要给每个事件找到一个合适的路测设备去发送广播消息。

输入描述

按照人易读的格式输入一行数据,参见输入样例,其中“ ABR={, }”中的每个字符都是关键分割符,输入中无空格,其他均为任意正整数,

输入 A 和 B 已经排好序, A 和 B 的大小不超过 50,正整数范围不会超过 65535。

输出描述z

( Ai,Bj)数对序列,排列顺序满足序列中前面的 Ax<=后面的 Ay,前面的 Bx<=后面的 By,

因为输入 A 和 B 已经排好序,所以实际上输出结果不用特意排序,排序不是考察点。

用例

输入A={1,3,5},B={2,4,6},R=1
输出(1,2)(3,4)(5,6)
说明

题目解析

首先,输入中有效数据的获取,我使用了正则

const regExp = /A\=\{(.+)\}\,B\=\{(.+)\}\,R\=(.+)/;

其中有三个捕获组,分别捕获出1,3,5和2,4,6以及1

然后我们就可以通过一些简单的字符串操作得到A,B,R数据了。 

得到A、B、R后,我们只要双重for,外层遍历A,内层遍历B,然后找满足A[i] + R = B[j]的数据,当然在找的过程中,需要记录第一个比A[i]大的B[j1],因为要防止找不到满足A[i] + R = B[j]的数据时,可以输出一个和A[i]最近的B[j1]

Ai,Bj 距离小于等于 R,但如果 Ai 找不到 R 范围内的 Bj,则列出距它最近的 1 个 Bj,当然此种情况仍然要满足 1,

算法源码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

rl.on("line", (line) => {
  const regExp = /A\=\{(.+)\}\,B\=\{(.+)\}\,R\=(.+)/;

  let [_, A, B, R] = regExp.exec(line);

  A = A.split(",").map(Number);
  B = B.split(",").map(Number);
  R = parseInt(R);

  console.log(getABR(A, B, R));
});

function getABR(A, B, R) {
  const ans = [];
  let start = 0;

  for (let i = 0; i < A.length; i++) {
    const a = A[i];
    let isFind = false;
    for (let j = start; j < B.length; j++) {
      const b = B[j];
      if (b >= a && B[start] < a) {
        start = j;
      }

      if (a + R === b) {
        ans.push([a, b]);
        isFind = true;
        break;
      }
    }
    if (!isFind && B[start] >= a) ans.push([a, B[start]]);
  }

  return ans.map((r) => `(${r[0]},${r[1]})`).join("");
}

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

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

相关文章

大数据培训课程Reduce Join案例实操

Reduce Join案例实操 1&#xff0e;需求 表4-4 订单数据表t_order idpidamount100101110020221003033100401410050251006036 表4-5 商品信息表t_product pidpname01小米02华为03格力将商品信息表中数据根据商品pid合并到订单数据表中。 表4-6 最终数据形式 idpnameamount…

2022我的前端面试总结

Webpack Proxy工作原理&#xff1f;为什么能解决跨域 1. 是什么 webpack proxy&#xff0c;即webpack提供的代理服务 基本行为就是接收客户端发送的请求后转发给其他服务器 其目的是为了便于开发者在开发模式下解决跨域问题&#xff08;浏览器安全策略限制&#xff09; 想…

盘点 | 跨平台桌面应用开发的5大主流框架

受益于开源技术的发展&#xff0c;以及响应快速开发的实际业务需求&#xff0c;跨平台开发不仅限于移动端跨平台&#xff0c;桌面端虽然在市场应用方面场景不像移动端那么丰富&#xff0c;但也有市场的需求。 相对于个人开发者而言&#xff0c;跨平台框架的使用&#xff0c;主…

Vue开发 提交后台,二维码,自定义

1. 修改title和图标 资源可以放在static下面&#xff0c;给一个小的&#xff1a; 直接再index里面改&#xff1a; 不生效&#xff0c;需要在 vue.config.js 中增加&#xff1a; module.exports {pwa: {iconPaths: {favicon32: logo.png,favicon16: logo.png,appleTouchIcon:…

阿里巴巴全新SpringCloud实战笔记(全彩版)GitHub狂揽70000标星

最近小编淘到一份宝贝&#xff01; 先看看目录&#xff1a; 这份手册真的非常全面&#xff0c;涵盖了所有SpringCloud所有的内容&#xff0c;限于文章篇幅原因&#xff0c;只能以截图的形式展示出来&#xff0c;有需要的小伙伴可以文末获取↓↓↓ 直接展示内容&#xff1a; …

react redux 状态管理

1.store store是一个状态管理容器&#xff0c;它通过createStore创建&#xff0c;createStore接收initialState和reducer两个参数。它暴露了4个api分别是&#xff1a; getState() dispatch(action) subscribe(listener) replaceReducer 前三个是比较常用的api&#xff0c;之…

葡萄糖-聚乙二醇-二茂铁Ferrocene-PEG-Glucose

葡萄糖-聚乙二醇-二茂铁Ferrocene-PEG-Glucose&#xff0c;二茂铁&#xff0c;是一种具有芳香族性质的有机过渡金属化合物&#xff0c;化学式为Fe(C5H5)2&#xff0c;常温下为橙黄色粉末&#xff0c;有樟脑气味。熔点172℃-174℃&#xff0c;沸点249℃&#xff0c;100℃以上能升…

腾讯云服务器+宝塔+后端+前端发布

1、申请云服务器。登陆。 https://cloud.tencent.com/ 创建实例 最好重置密码&#xff0c;并记住。 配置安全组&#xff0c;当我们是学习的时候&#xff0c;全部开放好了。 有些版本是去“防火墙”那里配置。 轻量应用服务器&#xff08;试用的&#xff09; 2、安装Docker。在…

Oracle LiveLabs实验:Load and Analyze Your Data with Autonomous Database

概述 本研讨会中的实验将引导您完成开始使用 Oracle 自治数据库的所有步骤。 首先&#xff0c;您将创建一个 Oracle 自治数据库实例。 然后&#xff0c;您将练习使用自治数据库工具和 API 从不同位置以不同格式加载数据的几种方法。 您将使用 SQL 分析数据并使用 Oracle Analy…

ShardingSphere笔记(二):自定义分片算法 — 按月分表

ShardingSphere笔记&#xff08;二&#xff09;&#xff1a;自定义分片算法 — 按月分表 文章目录ShardingSphere笔记&#xff08;二&#xff09;&#xff1a;自定义分片算法 — 按月分表一、准备二、分表逻辑三、自定义分片算法步骤&#xff08;以按月分表为例&#xff09;1. …

【AI工程】08-MLOps工具-在Charmed Kubeflow上运行MindSpore

作者&#xff1a;王磊 更多精彩分享&#xff0c;欢迎访问和关注&#xff1a;https://www.zhihu.com/people/wldandan 在【AI工程】02-AI工程&#xff08;AI Engineering&#xff09;面面观中&#xff0c;提到Gartner把AI工程化作为未来重要战略技术趋势&#xff0c;Gartner认为…

关于webpack(v5.74.0)的模块联邦原理

在webpack中模块联邦的实现主要依赖于两个插件ContainerReferencePlugin和ContainerPlugin&#xff0c;ContainerPlugin是用来添加入口依赖并给当前依赖添加异步依赖&#xff0c;ContainerReferencePlugin用来添加解析用户的请求并分析是否是远程模块&#xff0c;然后加载远程模…

使用 JPA、Hibernate 和 Spring Data JPA 进行审计

1. 概述 在ORM的上下文中&#xff0c;数据库审计意味着跟踪和记录与持久实体相关的事件&#xff0c;或者只是实体版本控制。受 SQL 触发器的启发&#xff0c;这些事件是对实体的插入、更新和删除操作。数据库审核的好处类似于源版本控制提供的好处。 在本教程中&#xff0c;我…

Shelby American 汽车 NFT 系列来袭!

我们在 The Sandbox 上推出 Shelby NFT 作品集&#xff0c;加入我们吧&#xff01;该系列包含 Carroll Shelby 制造的一些最稀有和最抢手的汽车&#xff0c;也是现实生活中最具收藏价值的汽车。这些汽车构成了最伟大的汽车历史&#xff0c;也是传奇人物 Carroll Shelby 的伟大代…

为什么开源在线表单工具能做好数据管理?

在数字化时代&#xff0c;数据的有效应用和管理可以说是企业的无形资产&#xff0c;做好数据管理既能提升办公效率&#xff0c;又能帮助企业从规律的数字化管理中获取高效的管理策略。那么&#xff0c;什么样的开源在线表单工具可以实现这一目的&#xff1f;对于企业而言&#…

Axure药企内部管理平台+企业内部管理系统平台

这是一款根据药企的需求设计的内部管理系统&#xff0c;此系统主要是针对市场部和销售部的管理&#xff0c;此作品选择了管理员和地区经理两个角色进行了设计&#xff0c; 设计软件&#xff1a;Axure8.1&#xff08;兼容9和10&#xff09; 作品类型&#xff1a;实战原型 其主要…

抓包神器之Charles(绕过代理屏蔽)以及证书校验绕过

简介 大多数进行渗透测试的时候都可以使用burp抓包,但有的app的部分功能会使用okhttp框架,这种框架会使App不使用默认的系统代理,解决方法就是通过proxy的方式走charles,下面是具体使用方法; Charles 是常用的网络封包截取工具, 通过将自己设置成系统的网络访问代{过}{…

11.21SSM-spring 第一天学习总结

1 Spring 是什么&#xff1f; 针对Bean 生命周期进行管理的轻量级容器 IOC : 浅谈IOC--说清楚IOC是什么_ivan820819的博客-CSDN博客_ioc 软件设计六大原则 : 设计模式六大原则 六大设计原则 1.开闭原则 定义&#xff1a;一个软件实体如类、模块和函数应该对扩展开放&a…

JavaScript/uni-app对接海康ISC openapi

JavaScript/uni-app对接海康ISC openapiJavaScript实现HMAC SHA256下载安装使用crypto-js使用签名生成工具参考JavaScript实现HMAC SHA256 Run the code online with this jsfiddle. Dependent upon an open source js library calledhttp://code.google.com/p/crypto-js/.<…

如何将驱动编译为kernel 模块

前言&#xff1a; 本文章目标平台是PC Linux,不包含其他平台。 执行下面的步骤之前&#xff0c;请先编译kernel通过。 linux KO编译 将驱动程序源码集成到Linux内核中&#xff1a; 将驱动源码文件放到drivers/net/wireless并命名 自己简单创建的几个没有任何关联的源文件&…