【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 告警抑制

news2024/12/28 21:00:06

2023大厂笔试模拟练习网站(含题解)
www.codefun2000.com
最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网大厂模拟练习题,还在极速更新中。欢迎关注公众号“塔子哥学算法”获取最新消息。

提交链接:

 首页 - CodeFun2000

为了更好的阅读体检,可以查看OJ上的题解。进入提交链接,点击右边菜单栏的"查看塔子哥的题解"

题目内容

告警抑制,是指高优先级告警抑制低优先级告警的规则。高优先级告警产生后,低优先级告警不再产生。请根据原始告警列表和告警抑制关系,给出实际产生的告警列表。

  • 不会出现循环抑制的情况

  • 告警不会传递,比如A->B,B->C,这种情况下A不会直接抑制C。但被抑制的告警仍然可以抑制其他低优先级告警。

输入描述

第一行为数字N,表示告警抑制关系个数,0 \leq N \leq120

接下来N行,每行是由空格分隔的两个告警ID,例如: id1 id2,表示id1抑制id2,告警ID的格式为:

大写字母+0个或者1个数字

最后一行为告警产生列表,列表长度[1,100]

输出描述

真实产生的告警列表

备注

告警ID之间以单个空格分隔

样例

输入

2
A B
B C
A B C D E

输出

A D E

说明

A抑制了B,B抑制了C,最后实际的告警为A D E

输入

4
F G
C B
A G
A0 A
A B C D E

输出

A C D E

说明

Java算法代码

import java.util.*;
 
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
 
    int n = Integer.parseInt(sc.nextLine());
 
    HashMap<String, HashSet<String>> fa = new HashMap<>();
    for (int i = 0; i < n; i++) {
      String[] tmp = sc.nextLine().split(" ");
      // id1抑制id2
      String id1 = tmp[0], id2 = tmp[1];
      fa.putIfAbsent(id2, new HashSet<>());
      // fa用于记录抑制id2的所有id1的集合
      fa.get(id2).add(id1);
    }
 
    String[] alertList = sc.nextLine().split(" ");
 
    System.out.println(getResult(fa, alertList));
  }
 
  public static String getResult(HashMap<String, HashSet<String>> fa, String[] alertList) {
    HashSet<String> alertSet = new HashSet<>(Arrays.asList(alertList));
 
    StringJoiner sj = new StringJoiner(" ");
 
    for (String id2 : alertList) {
      // 如果没有抑制id2的更高级的告警,或者有抑制id2的更高级的告警,但是此高级告警没有出现在alertList列表中
      if (!fa.containsKey(id2) || Collections.disjoint(fa.get(id2), alertSet)) {
        // 此时id2就可以正常告警
        sj.add(id2);
      }
    }
 
    return sj.toString();
  }
}

JS算法代码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");
 
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});
 
const lines = [];
let n;
rl.on("line", (line) => {
  lines.push(line);
 
  if (lines.length == 1) {
    n = lines[0] - 0;
  }
 
  if (n !== undefined && lines.length == n + 2) {
    lines.shift();
    const alertList = lines.pop().split(" ");
    const relations = lines.map((str) => str.split(" "));
    console.log(getResult(relations, alertList));
    lines.length = 0;
  }
});
 
function getResult(relations, alertList) {
  const fa = {};
 
  for (let [id1, id2] of relations) {
    // id1抑制id2
    if (!fa[id2]) fa[id2] = new Set();
    // fa用于记录抑制id2的所有id1的集合
    fa[id2].add(id1);
  }
 
  const alertSet = new Set(alertList);
 
  const ans = [];
  for (let id2 of alertList) {
    // 如果没有抑制id2的更高级的告警,或者有抑制id2的更高级的告警,但是此高级告警没有出现在alertList列表中
    if (disjoint(alertSet, fa[id2])) {
      // 此时id2就可以正常告警
      ans.push(id2);
    }
  }
 
  return ans.join(" ");
}
 
// 判断两个集合是否不相交,不相交返回true,相交返回false
function disjoint(set1, set2) {
  if (!set1 || !set2) return true;
 
  for (let id1 of set1) {
    if (set2.has(id1)) return false;
  }
  return true;
}

Python算法代码

# 输入获取
n = int(input())
relations = [input().split() for _ in range(n)]
alertList = input().split()
 
 
# 算法入口
def getResult():
    fa = {}
 
    # id1抑制id2
    for id1, id2 in relations:
        if fa.get(id2) is None:
            fa[id2] = set()
        # fa用于记录抑制id2的所有id1的集合
        fa[id2].add(id1)
 
    alertSet = set(alertList)
 
    ans = []
 
    for id2 in alertList:
        # 如果没有抑制id2的更高级的告警,或者有抑制id2的更高级的告警,但是此高级告警没有出现在alertList列表中
        if fa.get(id2) is None or alertSet.isdisjoint(fa[id2]):
            # 此时id2就可以正常告警
            ans.append(id2)
 
    return " ".join(ans)
 
 
# 算法调用
print(getResult())

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

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

相关文章

基于Dlib的疲劳检测系统

需要源码的朋友可以私信我 基于Dlib的疲劳检测系统 1、设计背景及要求2、系统分析3、系统设计3.1功能结构图3.2基于EAR、MAR和HPE算法的疲劳检测3.2.1基于EAR算法的眨眼检测3.2.2基于MAR算法的哈欠检测3.3.3基于HPE算法的点头检测 4、系统实现与调试4.1初步实现4.2具体实现过程…

使用MATLAB画SCI论文图

从gcf和gca说起 不论是 Python 绘图还是Matlab绘图&#xff0c;想要获得更好看的图&#xff0c;都会用到这两个单词。 gcf&#xff1a;get current figure&#xff0c;是目标图像的图形句柄对象 gca&#xff1a;get current axes&#xff0c;是目标图像的坐标轴句柄对象 Mat…

pandas---数学函数、离散化处理、分组聚合

1. 数学函数 方差&#xff1a;当数据分布比较分散&#xff08;即数据在平均数附近波动较大&#xff09;时&#xff0c;各个数据与平均数的差的平方和 较大&#xff0c;方差就较大&#xff1b;当数据分布比较集中时&#xff0c;各个数据与平均数的差的平方和较小。因此方差越 …

【计算机网络】如何学好计网-第一章概论

相关术语 URI&#xff1a;Uniform Resource Identifier 统一资源标识符&#xff0c;指的是一个资源 URL&#xff1a;Uniform Resource Location 统一资源定位符&#xff0c;URI的子集&#xff0c;用地址定为的方式指定一个资源 URN&#xff1a;Uniform Resource Name 统一资…

北京论道|光环云李卓然:以“云”为帆 赋能文化出海行业创新增长

2023年6月15~16日&#xff0c;由流媒体网主办&#xff0c;北京新媒体&#xff08;集团&#xff09;有限公司、北京联通、北京电信、北京移动共同协办的「北京论道暨第25届中国智能视听与科技创新高峰论坛」在北京隆重举行。 本届论道以“电视的未来与未来的电视”为主题&#…

java语言中方法的重载

文章目录 前言一、重载是什么&#xff1f;二、使用步骤 1.实操展示2.注意事项总结 前言 小时候&#xff0c;我们学会了十以内的加法&#xff0c;却对十以外的加法感到害怕&#xff0c;但从现在来看&#xff0c;它们都属于加法&#xff0c;只是计算方法略有不同。方法的重载也一…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(IV)

2023大厂笔试模拟练习网站&#xff08;含题解&#xff09; www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据&#xff0c;挂载到我们的OJ上&#xff0c;供大家学习交流&#xff0c;体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

Computer Graphics From Scratch - Chapter 9

系列文章目录 简介&#xff1a;Computer Graphics From Scratch-《从零开始的计算机图形学》简介 第一章: Computer Graphics From Scratch - Chapter 1 介绍性概念 第二章&#xff1a;Computer Graphics From Scratch - Chapter 2 基本光线追踪 第三章&#xff1a;Computer Gr…

IEEE 最佳论文提名 | TraND:用步态算法优化身份识别

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;TraND: Transferable Neighborhood Discovery for Unsupervised Cross-domain Gait Recognition 论文链接: https://arxiv.org/pdf/2102.04621v1.pdf 步态识别开始应用在公共场域身份…

centos mysql安装配置远程访问

包含以下三个部分&#xff1a;mysql安装&#xff0c;mysql密码重置、mysql配置远程访问。 一 centos安装mysql 1、wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2、yum -y install mysql57-community-release-el7-10.noarch.rpm 3、yum…

to be delete

一、grafana版本升级 1.1 还是先跟着官网简单走一波 建议经常升级Grafana&#xff0c;以获取最新的修补程序和增强功能。 为了实现这一点&#xff0c;Grafana升级向后兼容&#xff0c;并且升级过程简单快捷。升级通常是安全的&#xff08;在许多次要版本和一个主要版本之间&a…

Python习题进阶

1.十六进制数字的大小 描述 计算的世界&#xff0c;除了二进制与十进制&#xff0c;使用最多的就是十六进制了&#xff0c;现在使用input读入一个十六进制的数字&#xff0c;输出它的十进制数字是多少&#xff1f; 输入描述&#xff1a; input读入一个十六进制数字&#xf…

微信支付服务商接入指引(企业)

目录 一、官方指引二、申请流程1.进入服务商平台2.填写资料3.账户验证&资料审核 三、登录 一、官方指引 https://kf.qq.com/faq/161220iqeAfA1612202yeURB.html 二、申请流程 1.进入服务商平台 https://pay.weixin.qq.com/static/partner_guide/service_provider.shtml…

【JVM快速入门篇】

本笔记内容为狂神说JVM快速入门篇部分 目录 一、JVM的位置 二、JVM体系结构 三、类加载器&#xff08;ClassLoader&#xff09; 四、双亲委派机制 双亲委派机制的作用 五、沙箱安全机制 六、Native ​编辑Native Method Stack 本机方法栈 Native Ilnterface本地接口…

低代码靠谱吗?实操一遍就知道了

一、前言 最近一段时间&#xff0c;“低代码”概念特别流行&#xff0c;有些人特别推崇它&#xff0c;也有些人对此不屑一顾。 推崇它的人认为&#xff0c;它有很多优点&#xff0c;比如说能够降低开发周期&#xff0c;提高系统开发效率&#xff0c;降低开发成本&#xff0c;学…

使用HBuilder将h5网站打包成app 自行打包

1、点击manifest.json&#xff0c;基础配置&#xff0c;APP名字&#xff0c;是否全面屏 2、然后点击图标配置&#xff0c;选好后点自动生成所有图标并替换 点击模块配置&#xff0c;选VideoPlayer和X5内核 然后顶部菜单选发行&#xff0c;选择原生App-云打包 选公测证书然后…

WPF教程-XAML介绍

XAML介绍 1.定义 为构建应用程序用户界面而创建的一种新的“可扩展应用程序标记语言”&#xff0c;提供一种便于扩展和定位的语法来定义和程序业务逻辑分离的用户界面。 XAML 是一种 XML&#xff08;Extensible Markup Language&#xff09;的扩展&#xff0c;XAML 是 WPF 中…

云计算——云计算与虚拟化的关系

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.虚拟化 1.什么是虚拟化 2.虚拟化技术作用 二.云计算与虚拟化的关系 三.虚…

一文让非技术宅读懂为什么AI更“喜欢”GPU而不是CPU?

一、引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;深度学习等算法在图像识别、自然语言处理、数据挖掘等方面表现出了强大的能力。而这些算法的底层计算&#xff0c;往往对硬件有着极高的要求。为了满足这些需求&#xff0c;越来越多的研究和工程实…

关于不同型号电脑谷歌浏览器下载指定版本的方法(超详细教程)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1、根据链接打开地址2、页面说明3、下载过程&#xff08;1&#xff09;选中指定版本点击它&#xff08;这里以52.0.27.37.1为例&#xff09;&#xff08;2&…