华为OD机试真题 JavaScript 实现【数列描述】【2023 B卷 100分】,附详细解题思路

news2024/12/31 5:53:41

在这里插入图片描述

一、题目描述

有一个数列a[N] (N=60),从a[0]开始,每一项都是一个数字。数列中a[n+1]都是a[n]的描述。其中a[0]=1。

规则如下:

a[0]:1

a[1]:11(含义:其前一项a[0]=1是1个1,即“11”。表示a[0]从左到右,连续出现了1次“1”)

a[2]:21(含义:其前一项a[1]=11,从左到右:是由两个1组成,即“21”。表示a[1]从左到右,连续出现了两次“1”)

a[3]:1211(含义:其前一项a[2]=21,从左到右:是由一个2和一个1组成,即“1211”。表示a[2]从左到右,连续出现了1次“2”,然后又连续出现了1次“1”)

a[4]:111221(含义:其前一项a[3]=1211,从左到右:是由一个1、一个2、两个1组成,即“111221”。表示a[3]从左到右,连续出现了1次“1”,连续出现了1次“2”,连续出现了两次“1”)

请输出这个数列的第n项结果(a[n],0≤n≤59)。

二、输入描述

数列的第n项(0≤n≤59)

5

三、输出描述

数列的内容

312211

四、解题思路

题目要求输出数列中第 n 项的结果,数列满足以下规则:每一项都是前一项的描述。首先给定的数列为 a[0] = 1。

具体规则如下:

  • a[0] = 1
  • a[1] = “11”,表示 a[0] 从左到右连续出现了 1 次 “1”
  • a[2] = “21”,表示 a[1] 从左到右连续出现了 2 次 “1”
  • a[3] = “1211”,表示 a[2] 从左到右连续出现了 1 次 “2” 和 1 次 “1”
  • a[4] = “111221”,表示 a[3] 从左到右连续出现了 1 次 “1”、1 次 “2” 和 2 次 “1”

根据规则,我们可以使用循环依次计算数列中的每一项,直到计算到第 n 项为止。

具体步骤如下:

  1. 读取输入的数列项数 n。
  2. 创建一个长度为 n+1 的字符串数组 arr,用于存储数列的每一项。初始化第一项 arr[0] 为 “1”。
  3. 使用循环计算数列的每一项,从 i = 1 开始迭代到 i = n,根据前一项 arr[i-1] 的描述,构建当前项 arr[i] 的描述。具体步骤如下:
    • 初始化一个空的 StringBuilder 对象 builder 用于构建当前项的描述。
    • 将前一项 arr[i-1] 转换为字符数组 cs。
    • 初始化变量 now 为 cs[0],用于记录当前字符。
    • 初始化变量 charCount 为 1,用于记录当前字符的连续出现次数。
    • 从 index = 1 开始迭代到 index = cs.length-1:
      • 如果 cs[index] 等于 now,则当前字符连续出现次数加 1。
      • 否则,将当前字符的连续出现次数和当前字符追加到 builder 中,更新 now 为 cs[index],并将 charCount 重置为 1。
    • 将最后一个字符的连续出现次数和字符追加到 builder 中。
    • 将 builder 转换为字符串,并赋值给当前项 arr[i]。
  4. 输出数列的第 n 项 arr[n]。

该算法通过迭代计算数列的每一项,根据前一项的描述构建当前项的描述,直到计算到第 n 项。

由于数列的项数 n 的范围是 0 到 59,因此该算法的性能是可接受的。

时间复杂度为 O(n^2),其中 n 是数列的项数。

空间复杂度为 O(n),需要额外的空间来存储数列的每一项。

五、JavaScript算法源码

function calculate(n) {
    const arr = new Array(n + 1);
    arr[0] = "1";

    for (let i = 1; i <= n; i++) {
        const prev = arr[i - 1];
        let builder = "";
        let count = 1;

        for (let j = 0; j < prev.length; j++) {
            if (prev[j] === prev[j + 1]) {
                count++;
            } else {
                builder += count + prev[j];
                count = 1;
            }
        }

        arr[i] = builder;
    }

    return arr[n];
}

六、效果展示

在这里插入图片描述


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

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

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

在这里插入图片描述

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

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

相关文章

GitOps的12个痛点

如今很多团队采用GitOps作为标准部署流程&#xff0c;这篇文章总结了GitOps的12个痛点&#xff0c;从而帮助我们在采用这一实践的过程中更好的理解GitOps的优势和缺陷&#xff0c;选择适合自己的解决方案。原文&#xff1a;The pains of GitOps 1.0[1] GitOps作为软件发布实践有…

Git与Gitee远程仓库的系列操作

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Git ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&#x…

Prometheus插件安装(mysql_exporter)

简介 mysql_exporter是用来收集MysQL或者Mariadb数据库相关指标的&#xff0c;mysql_exporter需要连接到数据库并有相关权限。既可以用二进制安装部署&#xff0c;也可以通过容器形式部署&#xff0c;但为了数据收集的准确性&#xff0c;推荐二进制安装。 一&#xff0c;下载安…

ASO优化之如何维护品牌词

App Store的关键词优化一般可以分为品牌词&#xff0c;竞品词和行业词&#xff0c;长度要控制在100字符以内。所以我们可以通过投放竞品词&#xff0c;将竞争对手的部分的流量占为己有&#xff0c;维护品牌词的有效方式有&#xff1a;1&#xff0c;率先拿下自己家的品牌词。 2…

『 前端三剑客 』:CSS选择器

文章目录 一 . 基本语法二 . CSS 引入方式2.1 内部样式表2.2 内联样式表2.3 外部样式表 三 . CSS选择器3.1 基础选择器1 . 标签选择器2 . 类选择器3 . id 选择器4 . 通配符选择器 3.2 复合选择器5 . 后代选择器6 . 子代选择器7 . 并集选择器8 . 伪类选择器 上一篇文章我们介绍了…

ProGuard 进阶系列(一): 运行源代码

在前面的文章深入 Android 混淆实践&#xff1a;ProGuard 通关秘籍和深入 Android 混淆实践&#xff1a;多模块打包爬坑之旅中&#xff0c;已经讲到了如何在 Android 中使用 ProGuard&#xff0c;以及如何自定义实现混淆规则的生成。为了更深入地理解 ProGuard 的细节&#xff…

Python3数据分析与挖掘建模(11)复合分析-分组分析与实现示例

1. 分组分析 1.1 概述 分组与钻取是数据分析中常用的技术&#xff0c;用于对数据进行聚合和细分分析。它可以帮助我们从整体数据中获取特定维度的汇总信息&#xff0c;并进一步钻取到更详细的子集数据中进行深入分析。 分组&#xff08;Grouping&#xff09;是指根据某个或多…

chatgpt赋能python:Python怎么写绝对值

Python怎么写绝对值 在Python编程语言中&#xff0c;有很多常用函数。其中包括求绝对值的函数。在这篇文章中&#xff0c;我们将介绍如何在Python中使用绝对值函数&#xff0c;并提供一些示例。 什么是绝对值函数&#xff1f; 绝对值函数是一个数学中常用的函数&#xff0c;…

WPF开发txt阅读器4:字体控件绑定

文章目录 控件折叠字体尺寸绑定选择字体字体的中文名称 txt阅读器系列&#xff1a; 需求分析和文件读写目录提取类&#x1f48e;列表控件与目录 控件折叠 作为一个txt阅读器&#xff0c;至少能够设置文字字体、尺寸&#xff0c;段落行间距等&#xff0c;还得有护眼模式等一系…

2023 年最新版Java面试题及答案整理(完整版,超详细)

程序员一步入中年&#xff0c;不知不觉便会被铺天盖地的“危机感”上身&#xff0c;曾经的那个少年已经不在&#xff0c;时间就是这样公平。就算你能发明Java语言&#xff0c;随着时间的推移&#xff0c;你注定还是要成为慢慢变蔫的茄子&#xff0c;缓缓变黑的葡萄。 看着金九…

支付宝商家多个账号下的账单管理工具配置指南

大家好&#xff0c;我是小悟 阅读这篇文章之前&#xff0c;结合这篇【有了这个工具&#xff0c;支付宝商家多个账号下的账单管理更方便了】干货食用更佳。 商户管理 这里录入的是商家应用相关信息 商户名称&#xff1a;应用id所属的应用名称。 应用id&#xff1a;支付宝开放…

Django新手必看:如何创建应用和定义数据表。(详细讲解)

Django新手必看&#xff1a;如何创建应用和定义数据表。 1. Django创建应用1.1 创建应用1.2 应用的添加 2. Django ORM2.1 定义数据表2.2 定义项目数据表2.3 通用字段选项2.4 外键使用2.5 应用数据库迁移 &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &…

json-server操作restful

1.安装Node.js 默认已经内置npm&#xff0c;下载对应软件包直接安装即可。nodejs的官网 命令 描述 指令解释npm -v查看版本npm install <模块名>安装模块npm list查看所有全局安装的模块npm list -g查看某个模块的版本号npm install --save <模块名>在package.js…

【大模型】开源大模型汇总以及微调策略

目录 前言LLaMAstanford AlpacaGuanacoVicunaChinese-LLaMA-AlpacaChinese-VicunaLuotuo-Chinese FalconOpenBuddy-Falcon ChatGLM && VisualGLMMOSSAquilaPandaGPTTigerBot模型微调策略LoRAQLORAP-tuningv2 前言 自从ChatGPT出世以来&#xff0c;各个大厂/研究院都纷…

Hugging News #0609: 最新代码生成模型 StarCoder+ 和 StarChat Beta 重磅发布!

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」&#xff0c;本期 Hugging News 有哪些有趣的消息…

SG90舵机介绍

SG90舵机简介 SG90舵机是一种位置&#xff08;角度&#xff09;伺服的驱动器&#xff0c;适用于那些需要角度不断变化并可以保持的控制系统。在机器人机电控制系统中&#xff0c;舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构&#x…

耗时一个月,整理了这份大厂Java面试 / 学习指南,共计1500+ 题全面解析

程序员一步入中年&#xff0c;不知不觉便会被铺天盖地的“危机感”上身&#xff0c;曾经的那个少年已经不在&#xff0c;时间就是这样公平。就算你能发明 Java 语言&#xff0c;随着时间的推移&#xff0c;你注定还是要成为慢慢变蔫的茄子&#xff0c;缓缓变黑的葡萄。 看着金…

AI不能做什么?

什么是非人工智能 每个行业都需要的 3 种人为驱动的决策能力 布兰代斯马歇尔 支持统计数据的研究报告预计高度依赖AI的未来。 • 2018年,麦肯锡全球研究院发布了一份《工作未来报告》,估计到2030年,全球将有4亿人被AI系统、工具和平台取代。 • 2023年3月,高盛发布了其《全球经…

Typora安装使用

Typora安装使用 1、概述 因为本人电脑是Mac笔记本&#xff0c;所以本文介绍下Mac M1芯片下Typora的安装使用以及在线插件的安装。 2、安装Typora 下载Typora 1.5.8&#xff1a;下载 Typora 1.5.8 - 马可菠萝 完成安装。 自定义下载喜欢的主题&#xff1a;点击文件->偏好…

day10——线性回归的改进之岭回归

线性回归的改进之岭回归 一、过拟合和欠拟合二、正则化类别三、岭回归四、实操&#xff1a;波士顿房价预测 一、过拟合和欠拟合 1&#xff0c;欠拟合 如下所示&#xff0c;机器学习到的天鹅特征太少了&#xff0c;导致区分标准太粗糙&#xff0c;不能准确识别出天鹅。 2&…