算法--外观数列

【算法Hot100系列】外观数列 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨。 阅读详情

描述

给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。
注意:整数序列中的每一项将表示为一个字符串。
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:

  1. 1
    
  2. 11
    
  3. 21
    
  4. 1211
    
  5. 111221
    

说明:
第一项是数字 1
描述前一项,这个数是 1 即 “一个 1 ”,记作 11
描述前一项,这个数是 11 即 “两个 1 ” ,记作 21
描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记作 1211
描述前一项,这个数是 1211 即 “一个 1 一个 2 两个 1 ” ,记作 111221

示例

示例 1:
输入: 1
输出: “1”
解释:这是一个基本样例。

示例 2:
输入: 4
输出: “1211”
解释:当 n = 3 时,序列是 “21”,其中我们有 “2” 和 “1” 两组,“2” 可以读作 “12”,也就是出现频次 = 1 而 值 = 2;类似 “1” 可以读作 “11”。所以答案是 “12” 和 “11” 组合在一起,也就是 “1211”。

分析

利用递归和StringBuffer来解析,通过StringBuffer可以大幅度明显感知到其的效率,把数组长度加1来

比如 n=6时,那么用递归得到上一层的字符串str=“111221”
我们将start指向下标0,我们从下标1开始遍历,遍历到“2”下标3的时候,sb拼上(3-0)个1即sb.append(3).append(1),将start指针指向下标3,接着重复以上操作,直到到达str的最后一位,sb直接拼上即可。

参考:
作者:ruo-guang
链接:https://leetcode-cn.com/problems/count-and-say/solution/1-ms-zai-suo-you-java-ti-jiao-zhong-ji-bai-liao-97/

实现

public String countAndSay(int n) {
        // 递归终止条件
        if (n == 1) {
            return "1";
        }
        StringBuffer res = new StringBuffer();
        // 拿到上一层的字符串
        String str = countAndSay(n - 1);
        int length = str.length();
        // 开始指针为0
        int start = 0;
        // 注意这从起始条件要和下面长度统一
        for (int i = 1; i < length + 1; i++) {
            // 字符串最后一位直接拼接
            if (i == length) {
                res.append(i - start).append(str.charAt(start));
            // 直到start位的字符串和i位的字符串不同,拼接并更新start位
            } else if (str.charAt(i) != str.charAt(start) ) {
                res.append(i - start).append(str.charAt(start));
                start = i;
            }
        }
        return res.toString();
    }
将一维数据(序列)转化为二维数据(图像)的方法汇总GAFS, MTF, Recurrence plot,STFT 虽然深度学习方法(1D CNN, RNN, LSTM 等)可以直接处理一维数据,但是当前的深度学习方法主要还是处理二维结构数据的,特别是在计算机视觉CV以及自然语言处理NLP领域,各种各样的方法层出不穷。因此,如果能够将一维序列数据转化为二维(图像)数据, 则可以直接结合CV以及NLP领域的方法,是不是很有趣! GAF, GASF, GADF, MTF, Recurrence Plot, STFT, 短时傅里叶变换 阅读详情

相关推荐

水环境综合管控平台完整方案

水环境综合管控平台项目(2026-2027)摘要 项目概况: 总投资5亿元的水环境综合管控平台项目,是国家数字政府与生态文明建设战略的重要实践。项目严格遵循2026年最新政策标准,整合物联网、大数据和AI技术,构建覆盖水质监测、污染溯源、生态保护等全流程的智能管控体系。 核心内容: 系统架构:采用五层设计(基础设施层至展示层),集成10大核心功能模块,包括水质动态监测、污染智能溯源和生态评估预警系统; 技术创新:运用2026年最新边缘计算和数字孪生技术,实现毫秒级水质异常响应和三维流域仿真; 实施规划:分7

随读手记 403

【算法】第一篇 外观数列

外观数列是指数列中的每一项都是描述前一项的外观或者外貌。它通常由初始项开始,通过描述前一项的外观来生成下一项。

入坑太深起不来 672

envi5.3处理高分二号影像数据详细过程记录

全文根据此篇文章进行数据处理: tm影像辐射定标_高分二号影像数据预处理及裁剪过程 其他参考: 学习笔记---遥感影像辐射定标与大气校正 利用ENVI自带全球DEM数据计算区域平均高程 高分二号数据处理流程(有高分二号的数据信息) GF2有多光谱和全色两个数据,MSS是多光谱的,PAN是全色的,多光谱的分辨率低,全色的高,需要把这两个数据融合,融合之前需要做定标等处理,获取经纬度。 一、多光谱影像处理 1. 辐射定标 以这个为例: 其他路径\2022.4.2...

ligous的博客 5万+

外观数列

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 1 被读作 “one 1” (“一个一”) , 即 11。 11 被读作 “two 1s” (“两个一”), 即 21。 21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串

weixin_43728206的博客 435

SAP 销售订单及发票 利润中心替代 Userexit出口 配置及程序

在跨公司销售业务中,跨公司销售订单的发票时无法从销售订单中将利润中心带到发票中,所以在跨公司的发票创建过程中需要配置出口来获取对应销售订单行项目的利润中心。 事务代码: 0KEM 配置步骤: 1、创建一个新的替代 2、创建一个步骤 3、维护一个先决条件,比如针对于特定工厂 PCASUB-VKBUR = '0001' 4、选择替代程序FORM,FORM必须为指定程序中存在的FORM名 5、编辑替代程序FORM 实现效果: 在程序FORM中打上断点 ...

李威威wiwi的博客 5069

STM32-DAC定时器触发三角波生成【频率与幅度精准控制】

本文详细介绍了STM32 DAC定时器触发三角波生成的原理与实现方法,涵盖硬件配置、频率与幅度精准控制技巧及代码实现。通过定时器触发DAC模块,可灵活调节三角波的频率和幅度,适用于信号发生器等高精度应用场景。

weixin_29161785的博客 452

38. 外观数列

38. 外观数列 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 1 被读作 “one 1” (“一个一”) , 即 11。 11 被读作 “two 1s” (“两个一”), 即 21。 21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , ...

enjoy_code_的博客 529

音视频从入门到精通——指数哥伦布码原理

在计算机中,一般数字的编码都为二进制,但是由于以相等长度来记录不同数字,因此会出现很多的。

mirana的专栏 1380

34.外观数列

文章目录一、题目描述二、解题思路三、代码演示 一、题目描述 定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = “1” countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后

Quiet_han的博客 703

ChatGPT Plus账号被降智?3个实用检测方法+终极解决方案(附国内支付指南)

本文针对ChatGPT Plus账号性能下降问题,提供了3个科学检测方法和系统级解决方案。通过详细分析症状、专业诊断技巧和优化策略,帮助用户有效应对GPT-4o等高级功能失效、响应质量下降等问题,特别包含国内用户关心的支付方案和账号管理建议。

weixin_42639633的博客 469

风控域——知识图谱相关原理

本文全面介绍了知识图谱在风控领域的应用原理。从基础知识入手,阐述了知识图谱的定义、概念及应用场景,重点聚焦于金融风控。进一步讲解了知识图谱的技术架构,涵盖计算、融合与构建等方面。深入探讨了知识表示、建模、抽取、挖掘、存储、融合、检索和推理等关键技术原理,并结合金融风控实际需求,详细说明了各技术环节的具体应用方法与流程,为构建高效风控知识图谱提供了理论与实践指导。

庄小焱 607

力扣刷题之路 38. 外观数列 Python解

给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = “1” countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11” 描述前一

Miku_wx的博客 813

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

算法 外观数列

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 1 被读作 “one 1” (“一个一”) , 即 11。 11 被读作 “two 1s” (“两个一”), 即 21。 21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。 给...

qj4865的博客 221

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【算法】外观数列

题目描述 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 1 被读作 “one 1” (“一个一”) , 即 11。 11 被读作 “two 1s” (“两个一”), 即 21。 21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 12...

qq_44694686的博客 228

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

递归算法求解外观数列

一.题目描述 外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 1 被读作 “one 1” (“一个一”) , 即 11。 11 被读作 “two 1s” (“两个一”), 即 21。 21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1...

biaogegegege1的博客 228

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

leetcode算法整理38外观数列

LEETCODE算法注解38: 「外观数列」是一个整数序列,从数字 1 开始, 序列中的每一项都是对前一项的描述。前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "one 1" ("一个一") , 即 11。 11 被读作 "two 1s" ("两个一"), 即 21。 21 被读作 "one 2", "...

qq_39502383的博客 202

算法之外观数列

题目: 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: 前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11” 描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 “21” 描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 “1211” 描述前一项,这个数是 1

程序员小祝的博客 263

leetcode算法刷题记录之外观数列

题目描述: 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 第一项是数字 1 描述前一项,这...

会飞的咕咕鱼的博客 236

算法题 外观数列

外观数列问题要求生成描述前一项数字序列的第n项。算法采用迭代方法,从"1"开始,每一轮遍历前一项字符串,统计连续相同字符的数量并拼接成新字符串。核心是使用双指针或单指针高效统计连续字符,并用StringBuilder优化拼接操作。时间复杂度为O(n×m),空间复杂度为O(m),其中m为字符串长度。该问题展示了如何通过迭代和字符串处理解决序列生成问题,需注意边界条件和性能优化。

红血哥 445

LeetCode小算法记录(四十)外观数列

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1被读作"one 1"("一个一") , 即11。11被读作"two 1s"("两个一"), 即21。21被读作"one 2", "one 1"("一个二...

qq_31404603的博客 278

LeetCode初级算法19:外观数列

????外观数列 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = “1” countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数是 1 即 “ 一 个

CSNZのBlog 169

每日算法-6 外观数列

问题 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 第n项 外观数列 说明 1 1 第一项是数字 1 2 11 描述前一项,这个数是 1 即 “一个 1 ”,记作 11 3 21 描述前一项,这个数是 11 即 “两个 1 ” ,记作 21 4 1211 描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记

Millionmile的博客 364

【算法】外观数列:C++ 实现

外观数列是一个整数序列,其中每一项都是对前一项的描述。序列的第一项是1,之后每一项都是对前一项的计数描述,比如第二项是11(因为第一项有一个1),第三项是21(因为第二项有两个连续的1),依此类推。本文深入探讨了外观数列的生成算法,并通过C++实现了递归与迭代两种解决方案,展现了算法设计的巧妙与语言的灵活性。外观数列不仅是算法学习中的一个有趣案例,更是理解递归、字符串处理等核心概念的绝佳途径。

master_chenchen的博客 532

算法leetcode|38. 外观数列(多语言实现)

给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。

二当家的白帽子 919

JavaScript算法探索:揭秘“外观数列”的艺术

外观数列,一个简练手脑又悦目的算法,不仅展示了序列变换的魅力,更锻炼了逻辑思维。在你的编码之旅中,是否遇见过别具一格的外观数列应用?或是有更高效的解法?欢迎在评论区留下你的智慧之光,让我们一起探索更多算法的奥秘,共绘就编程的艺术。欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。DTcode7的博客首页。一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身农奴把歌唱,

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1123
上一篇: 算法--有效的括号
下一篇: 算法--合并两个有序链表
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值