华为OD机试真题 JavaScript 实现【日志采集系统】【2023Q1 100分】

news2024/11/15 12:04:14

在这里插入图片描述

一、题目描述

日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采集系统分批上报。

  • 如果上报太频繁,会对服务端造成压力;
  • 如果上报太晚,会降低用户的体验;
  • 如果一次上报的条数太多,会导致超时失败。

为此,项目组设计了如下的上报策略:

  1. 每成功上报一条日志,奖励1分
  2. 每条日志每延迟上报1秒,扣1分
  3. 积累日志达到100条,必须立即上报

给出日志序列,根据该规则,计算首次上报能获得的最多积分数。

二、输入描述

按时序产生的日志条数T1,T2…Tn,其中1 <= n <= 1000,0 <=Ti <= 100。

三、输出描述

首次上报最多能获得的积分数。3222

四、解题思路

  1. 读取输入的整数数组 arr;
  2. 初始化变量 count 和 max 为 0,用于记录累积日志条数和最大积分数;
  3. 遍历数组元素的下标 i,从 0 到 arr.length-1;
    • 将当前元素的值转换为整数 num;
    • 如果 num 为 0,跳过当前循环;
    • 累加 num 到变量 count,表示累积日志条数;
    • 初始化变量 score 为 0,用于计算当前上报情况下的积分数;
    • 对于下标从 0 到 i 的元素,进行以下操作:
      • 如果累积日志条数超过 100,并且当前下标 i 与循环下标 j 相等,表示必须立即上报,计算 score 为 num 减去超过 100 的部分;
      • 否则,计算 score 为当前元素的值减去延迟上报的时间;
    • 如果 score 大于 max,更新 max 的值为 score;
    • 如果累积日志条数达到或超过 100,跳出循环;
  4. 输出最大积分数 max;

五、JavaScript算法源码

function calculate(logs) {
    const arr = logs.split(" ");
    let count = 0;
    let max = 0;

    for (let i = 0; i < arr.length; i++) {
        const num = parseInt(arr[i]);
        if (num === 0) {
            continue;
        }

        count += num;

        let score = 0;
        for (let j = 0; j <= i; j++) {
            // 如果累积日志条数超过 100,并且当前下标 i 与循环下标 j 相等,表示必须立即上报,计算 score 为 num 减去超过 100 的部分;
            if (count > 100 && i === j) {
                score += num - (count - 100);
            } else {
                // 计算 score 为当前元素的值减去延迟上报的时间
                score += parseInt(arr[j]) - (i - j) * parseInt(arr[j]);
            }
        }

        // 如果 score 大于 max,更新 max 的值为 score
        if (score > max) {
            max = score;
        }

        // 如果累积日志条数达到或超过 100,跳出循环
        if (count >= 100) {
            break;
        }
    }

    return max;
}

感谢刷题群小伙伴提供的简化算法。

function calculateMaxScore(logs) {
  const arr = logs.split(" ");
  let count = 0;
  let max = 0;

  for (let i = 0; i < arr.length; i++) {
    const num = parseInt(arr[i]);
    count += num;
    let score = 0;

    if (num !== 0) {
      for (let j = 0; j <= i; j++) {
        score += parseInt(arr[j]) - (i - j) * parseInt(arr[j]);
      }

      if (count > 100 && i === arr.length - 1) {
        score += num - (count - 100);
      }
    }

    max = Math.max(max, score);

    if (count >= 100) {
      break;
    }
  }

  return max;
}

六、效果展示

1、输入

2 95 3

2、输出

95

3、说明

如果第2个时刻上报,可获得最大积分(2 + 95)- 2 * 1 = 95。

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

ffplay播放http-mp4视频提示 “stream 1, offset 0x1f85: partial file“错误

解决办法就是将非交织视频 重新 remux. ffmpeg -i a.mp4 -c copy -movflags faststart a1.mp4 -movflags faststart : 这个是将moov移动到 mp4头部,和remux没有关系. 这样处理也是通过HTTP 流式播放必须要做的一步.

Linux防火墙学习笔记11

iptables扩展动作&#xff1a;TARGET EXTENSION: filter&#xff1a; -j ACCEPT -j DROP -j REJECT -j LOG nat: -j SNAT: 源地址转换 -j MASQUERADE: 转换源地址&#xff08;伪装&#xff09; -j DNAT: 目的地址转换及端口 -j REDIRECT: 转换目标端口 本机端…

Java后端入职第六天,Nginx搭建负载均衡+反向代理

一:需求背景 Nginx相信大家应该不陌生吧!是一个高性能web服务器,可以做负载均衡或者是反向代理,比如,把静态页面直接部署到到html,实现动静分离,一个服务器部署多个服务,缓解服务压力,等等,都可以利用Nginx实现。 1.负载均衡 这个理解比较简单,其实就是压力分摊,…

Aspose.Pdf使用教程:获取PDF文档中的所有注释

Aspose.PDF 是一款高级PDF处理API&#xff0c;可以在跨平台应用程序中轻松生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现&#xff0c;保护和打印文档。无需使用Adobe Acrobat。此外&#xff0c;API提供压缩选项&#xff0c;表创建和处理&#xff0c;图形和图像功能&am…

小马赠书【第7期】清华出版社 IT BOOK 多得活动(送书5本)

本期 敬 之 共精心挑选了 15 本 IT 相关书籍&#xff0c;包含 前端、后端、数据分析、人工智能、python、低代码 等各个领域。关于如何参与等具体活动信息请看活动详情页&#xff0c;以下是 15 本 IT 书籍介绍&#xff1a; 活动详情页&#xff1a;小马赠书【第7期】 1. C《C 高…

Django高级扩展之静态文件和ajax使用

目录 使用静态文件 创建静态文件目录 Settings.py配置 创建css文件 路由与视图 设置路由 视图 模板使用静态文件 调用css 调用js 调用图片 优化路径 加载标签 修改文件路径 修改图片路径 修改js路径 修改css路径 使用Ajax 应用场景 示例 路由 视图 模板…

Koordinator 最佳实践系列:精细化 CPU 编排

作者&#xff1a;乔普、申信 介绍 在云原生环境中&#xff0c;集群提供者常常将不同类型的工作负载部署在同一个集群中&#xff0c;利用不同业务的不同峰值效果&#xff0c;实现资源分时复用&#xff0c;避免资源浪费。然而&#xff0c;不同类型负载之间混合部署常常会导致资…

字符集和java的编码与解码

一、ASCII和GBK字符集 计算机存储一个英文字符需要一个字节。 ASCII字符集&#xff0c;包括128&#xff08;0000000B~1111111B&#xff09;个数据&#xff0c;存储英文字母和字符&#xff0c;对于欧美国家够用。 例如&#xff0c;存储字符’a’&#xff0c;查询ASCII得到为97&a…

Java阶段四Day03

Java阶段四Day03 文章目录 Java阶段四Day03数据处理基本流程代码编写顺序开发DAO层&#xff0c;添加的依赖项配置数据源任务拆解内容管理MySQL中的数据类型和Java属性的类型对照关于MyBatis PlusMyBatis Plus的基本使用关于MyBatis Plus的使用建议汇总如下自动更新时间 关于Pro…

一种不停服的数据迁移方案

一、前言 好的方案是一步步演进出来的。当前最优的系统方案&#xff0c;可能在下一个月、三个月或半年后&#xff0c;就会遇到瓶颈&#xff0c;需要调整自身以便适应新的业务场景。系统的演进就是一个快进版的人类进化史。 我之前负责的一个系统&#xff0c;一开始基本没啥数…

46 最佳实践-性能最佳实践-内存大页

文章目录 46 最佳实践-性能最佳实践-内存大页46.1 概述46.2 操作指导 46 最佳实践-性能最佳实践-内存大页 46.1 概述 相比传统的4K内存分页&#xff0c;openEuler也支持2MB/1GB的大内存分页。内存大页可以有效减少TLB miss&#xff0c;显著提升内存访问密集型业务的性能。ope…

证券行业异构系统众多,微服务和网格如何全都要

在携手网易数帆取得中间件云原生化的创新成果之后&#xff0c;安信证券已在谋划大规模微服务化的布局&#xff0c;以确保信息系统架构走在现代金融科技的前列&#xff0c;支撑业务在未来数智金融竞争中把握主动权。 架构未动&#xff0c;思想先行。安信证券近日在内部组织了一…

安全左移DevSecOps开源工具链建设

开发安全相关技术和产品受到越来越多的关注。行业共识认为&#xff0c;应用系统上线之后进行软件漏洞修复&#xff0c;其修复成本是需求设计阶段修复成本的几十倍。因此&#xff0c;在开发环节&#xff0c;引入相应的安全工具&#xff0c;能够有效的降低漏洞的修复成本&#xf…

vue+el-select下拉实现:全选、反选、清空功能

问题描述&#xff1a; el-select下拉框要求实现全选功能。具体功能包括&#xff1a; 当选择【全选】时&#xff0c;所有选项全部被勾选&#xff1b;当选择【反选】时&#xff0c;已选择选项变为未选择选项&#xff0c;未选项变为已选项当选择【清空】时&#xff0c;所有选项变…

SpringBoot进阶学习?看这篇就够了

相信从事Java开发的朋友都听说过SSM框架&#xff0c;老点的甚至经历过SSH&#xff0c;说起来有点恐怖&#xff0c;比如我就是经历过SSH那个时代未流。当然无论是SSM还是SSH都不是今天的重点&#xff0c;今天要说的是Spring Boot&#xff0c;一个令人眼前一亮的框架&#xff0c;…

作用域详解

作用域详解 1、概念2、分类2.1 全局作用域2.2 局部作用域2.2.1 函数作用域2.2.2 块级作用域2.2.3 块级作用域与函数声明 1、概念 JavaScript中的作用域是指变量、函数和对象在代码中可访问的范围。作用域规定了代码中的标识符&#xff08;变量名、函数名等&#xff09;在何处和…

ansible自动部署zabbix监控平台

目录 ansible端部署 使用ansible配置zabbix-mysql端 使用ansible配置zabbix-server端 使用ansible配置zabbix-agent端 一键部署zabbix Ansible是一款开源的自动化运维工具&#xff0c;可以通过SSH协议远程自动化地执行一些复杂的IT工作&#xff0c;例如程序部署、配置管理、…

Python自动化测试——postman,jmeter接口测试

关于众所postman&#xff0c;jmeter&#xff0c;做自动化测试的我想对这两个词并不陌生。大家都知道postman用来做接口测试很方便,下面我们就用一些例子来演示一下它该如何进行接口测试&#xff1a; 首先我们来介绍一下接口测试的概念&#xff1a; 1、什么是接口测试&#xf…

【裸机开发】内核时钟 PLL1 配置实验(一)—— 寄存器分析篇

本章主要会回答以下问题 &#xff1f; imx6u 的时钟源来自于哪 &#xff1f;为什么一个起始时钟源&#xff0c;最终分成了多路&#xff1f;不同的时钟源是如何与外设对应起来的&#xff1f;&#xff08;时钟树&#xff09;要配置内核时钟频率 有哪些步骤 &#xff1f;涉及到哪…

NLP学习笔记十一-word2vec模型

NLP学习笔记十一-word2vec模型 再介绍word2vec模型之前&#xff0c;我们需要先介绍一些背景知识。 我们只知道&#xff0c;NLP这一领域在ward2vec出现之前肯定也是有很大程度发展的&#xff0c;那么想要用将自然语言用计算机进行处理&#xff0c;进行计算&#xff0c;我们必须…