LeetCode|算法|笔记:第38题:外观数列

本文答案并没有参考自LeetCode官方题解(因为没有~) 。
题目描述
【LeetCode|算法|笔记:第38题:外观数列】给定一个正整数 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】
第2个数列是对前一个数列的“描述”:【1】是 1 个 1 , 所以第2个数列是 【11】
第3个数列也是对前一个数列的“描述”:【11】是 2 个 1 , 所以第3个数列是 【21】
第4个数列也是对前一个数列的“描述”:【21】是 1 个 2 和 1 个 1 , 所以第4个数列是 【1211】
第5个数列也是对前一个数列的“描述”:【1211】是 1 个 1 ,1 个 2, 2 个1, 所以第5个数列是 【111221】
啊~[流泪]
【方法1】正常解法题目也说了是简单 ,
观察:如果是【n1】 , 则描述成【n1】 , 所以可以总结出:
如果是【nm】 , 则描述成【nm】
所以解法就是:

  1. 创建数组为前一个数组的描述 , 第n个数组就是答案
  2. 描述方法为:遍历前一个数组 , 记录数字m连续出现的次数n , 描述为 nm 就可以了
嗯 , 超简单的
(>▽<)