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

news2024/11/26 19:21:54

在这里插入图片描述

一、题目描述

有一个数列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),需要额外的空间来存储数列的每一项。

五、Java算法源码

public static void main(String[] args) {
    int sum = new Scanner(System.in).nextInt() + 1;
    String[] arr = new String[sum];
    arr[0] = "1";
    for (int i = 1; i < sum; i++) {
        StringBuilder builder = new StringBuilder();
        char[] cs = arr[i - 1].toCharArray();
        char now = cs[0];
        int charCount = 1;
        int index = 1;
        while (index < cs.length) {
            if (cs[index] == now) charCount++;
            else {
                builder.append(charCount).append(now);
                now = cs[index];
                charCount = 1;
            }
            index++;
        }
        builder.append(charCount).append(now);
        arr[i] = builder.toString();
    }
    System.out.println(arr[sum - 1]);
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

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

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

相关文章

【数据结构】图的定义、存储

对王道数据结构选择题做错和不清楚的题的简单纠错 图的定义 一个有n个顶点和n条边的无向图一定是有环的 一个无向图有n个顶点和n-1条边&#xff0c;可以使它连通单没有环&#xff0c;若再加一条边&#xff0c;则会形成环 若图中顶点数为n&#xff0c;则它的生成树有n-1条边&am…

网际互联及OSI七层模型:

网际互联及OSI七层模型&#xff1a; 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 物理层 作用&#xff1a;定义一些电器&#xff0c;机械&#xff0c;过程和规范&#xff0c;如集线器&#xff1b; PDU(协议数据单元)&#xff1a;bit/比特 设备&#xff…

分布式锁原理与实战三:ZooKeeper分布式锁的原理

目录 ZooKeeper分布式锁的原理 ZooKeeper的每一个节点&#xff0c;都是一个天然的顺序发号器。 ZooKeeper节点的递增有序性&#xff0c;可以确保锁的公平 ZooKeeper的节点监听机制&#xff0c;可以保障占有锁的传递有序而且高效 ZooKeeper的节点监听机制&#xff0c;能避免羊群…

STM32开发——定时器led、PWM呼吸灯

目录 1.定时器控制LED亮灭 2.PWM呼吸灯——定时器 1.定时器控制LED亮灭 定时器分类&#xff1a; 基本定时器&#xff08;TIM6~TIM7&#xff09; 通用定时器&#xff08;TIM2~TIM5&#xff09; 高级定时器&#xff08;TIM1和TIM8&#xff09; 通用定时器介绍&#xff1a; 16 …

jenkins接口自动化测试,allure报告怎么清楚上一个项目的用例报告?

持续集成(CI Continuous integration/CD Continuous Deployment)的含义其实是在研发过程中团队开发成员持续性的将他们的工作集成到一个完整流程中&#xff0c;通常每个成员每天至少集成一次&#xff0c;每次集成都通过自动化的构建&#xff08;包括编译&#xff0c;发布&#…

【数据分享】1929-2022年全球站点的逐月平均降水量(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;说到常用的降水数据&#xff0c;最详细的降水数据是具体到气象监测站点的降水数据&#xff01; 之前我们分享过1929-2022年全球气象站点的逐月平均气温、逐月最高气温…

【Windows】解决无线网卡TL-WN823N免驱版无法上网的问题

【Windows】解决无线网卡TL-WN823N免驱版无法上网的问题 1、背景2、解决办法3、查看适配器 1、背景 下午去前台领了一个"300M无线USB网卡"。 插到台式机上发现不能跳出WLAN网络信号。 我观察到每次插入无线上网卡&#xff0c;在window设置–>设备–>其他设…

员工资料导入

人事管理项目-员工资料导入 后端接口实现前端实现 既然有员工资料导出需求&#xff0c;当然也就有导入需求。对前端而言&#xff0c;员工资料导入就是文件上传&#xff0c;对后端而言&#xff0c;则是获取上传的文件进行解析&#xff0c;并把解析出来的数据保存到数据库中。 后…

Springboot实验二(用配置文件的方式整合Mybatis)仅供参考!

&#xff08;1)articleList.html 效果如下: <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org/"> <head> <meta charset"UTF-8"> <title>article 列表</title> </head> <body…

数论与组合数学 期末总结(未完

自然数的基本性质 数学归纳法(Principle of Mathematical Induction) n n 0 nn_{0} nn0​时成立&#xff0c;且 n k nk nk成立 ⇒ n k 1 \Rightarrow nk1 ⇒nk1成立&#xff0c;则定理对 n ≥ n 0 n\ge n_{0} n≥n0​成立良序定理(Well Ordering Principle) 每个非空集合…

网络编程 lesson7 广播组播和本地通信

目录 广播 什么是广播&#xff1f;&#xff08;了解&#xff09; 广播发送流程 广播接收流程 组播 什么是组播&#xff1f; 组播地址 组播结构体 组播发送流程 组播接收 本地套接字通信 什么是本地套接字通信&#xff1f; 特性 核心代码 程序实例 服务端 客户…

SpringCloud源码解析-gatewayopenFeign

SpringCloud高级应用-源码解析 1. gateway 源码解析1.1 自动装配1.2 核心装配1.2.1 GatewayClassPathWarningAutoConfiguration1.2.2 GatewayAutoConfiguration1.2.3 GatewayLoadBalancerClientAutoConfiguration1.2.4 GatewayRedisAutoConfiguration 1.3 Gateway 工作机制1.3.…

分布式任务调度XXL-JOB

XXL-JOB 分布式任务调度平台特点 职责分离&#xff0c;任务调度&#xff0c;任务执行解耦 执行一致性&#xff0c;任务执行不会多次重复执行 丰富的路由策略&#xff08;指定那个执行实例执行&#xff09; 阻塞处理 &#xff08;触发的任务&#xff0c;上一次没有执行完&am…

Android Studio类ChatGpt的免费AI编程助手

ChatGpt大火&#xff0c;带动了AI工具的发展&#xff0c;介绍两款免费的AI编程助手&#xff0c;一款用于输入关键字自动输出代码&#xff0c;一款则是自动补全提示&#xff0e; 可支持大部分代码编辑器&#xff0c;这里主要介绍Android Studio上安装使用&#xff0e; Bito 支…

来阿里面试,问我未来3-5年规划,我给领导画个大饼...

在面试的过程中是不是经常被面试官问未来几年的职业规划?你会答吗&#xff1f;是不是经常脑袋里一片空白&#xff0c;未来规划&#xff1f;我只是想赚更多的钱啊&#xff0c;哈哈哈&#xff0c;今天我来教大家&#xff0c;如何给面试官画一个大饼&#xff0c;让他吃的不亦乐乎…

c++day4 ——homework

1.思维导图 2. 整理类中特殊成员函数&#xff1a;构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数&#xff0c;拷贝赋值函数的使用和实现 特殊成员函数的使用和实现&#xff1a; ① 构造函数 功能&#xff1a;当使用类实例化对象时&#xff0c;给类对象初始化空间以及初…

基于RK3399+FPGA的地面测试台多参数数据记录仪方案(一)硬件设计

地面测试台属于某型号数据记录仪的配套测试设备&#xff0c;主要工作包括&#xff1a;飞行前对记录 仪的功能检查&#xff0c;测试其工作状态和稳定性&#xff1b;实验结束后对已存储到记录仪中的数据进行 回读和进一步处理&#xff0c;通过数据分析得出导弹各项参数在飞行试…

苹果的首款“头显设备”Vision Pro在短期内必将被Meta Quest超越

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;Vision Pro是苹果在今年的WWDC2023开发者大会上发布的一款结合了增强现实(AR)和虚拟现实(VR)的“头显设备”&#xff0c;Vision Pro 的最终售价高达 3499 美元&#xff08;约合…

观察级水下机器人使用系列之二多普勒速度记录仪(DVL)

本文主要讲述观察级水下机器人所使用的多普勒速度记录仪器&#xff08;DVL&#xff09;&#xff0c;见下图。多普勒测速技术自1960年开始研究&#xff0c;1980年开始实现商业化&#xff0c;80年代中后期&#xff0c;窄带多普勒测速技术研究已日趋成熟&#xff0c;90年代以后&am…

初学者应该怎么学git-上

初学者应该怎么学git-上 Git 下载&安装 官网 地址: https://git-scm.com/ 下载版本: Git-2.33.0.2-64-bit.exe 下载慢&#xff0c;可以到镜像下载: http://npm.taobao.org/mirrors/git-for-windows/ 卸载 说明&#xff1a;如果安装过&#xff0c;可以卸载和老师版本…