| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 力扣 [38] [中等] [外观数列] -> 正文阅读 |
|
[数据结构与算法]力扣 [38] [中等] [外观数列] |
难度中等737收藏分享切换为英文接收动态反馈 给定一个正整数? 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列:
前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 第一项是数字 1 描述前一项,这个数是 要?描述?一个数字字符串,首先要将字符串分割为?最小?数量的组,每个组都由连续的最多?相同字符?组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。 例如,数字字符串? 示例 1: 输入:n = 1 输出:"1" 解释:这是一个基本样例。 示例 2: 输入:n = 4 输出:"1211" 解释: countAndSay(1) = "1" countAndSay(2) = 读 "1" = 一 个 1 = "11" countAndSay(3) = 读 "11" = 二 个 1 = "21" countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211" 提示:
?--------------------------------分割线------------------------------- 老规矩,看到所求项跟前面的项有关,想到用递归或动态规划。此处选择用动态规划,空间换时间,把所有项算出来。 重点难点: 1. 字符串长度:n值为20开始,字符串长度就变得很大,所以上来直接给MAXLEN 为10000 2. 根据上一个字符串,推算下一个字符串,使用双指针,统计相同字符个数,然后个数和对应字符写到下一个字符串中。 直接贴代码
过程中写了一个bug,定位了半个小时。。。哎,低级错误 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 0:56:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |