Leetcode刷题记(12)—报数

题目要求:

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

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

1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

题解:

1.读懂题意!!!读懂题后写出来几个数字没有发现什么规律,总觉得要用递归循环,但不知道怎么写,就刚开始用最笨的方法写出了30个数,时间复杂度为O(1),但是真心晕,再多一点数就自闭了....

2.后来查看了一下大家的评论,用两层循环即可:外层循环为输入的整数n,因为下一个数字依赖于上一个数字,第二层循环对上一个数字进行遍历,统计每一个数字出现的次数,然后插入到字符串中,这种方法虽然时间复杂度比暴力法高,但看起来舒爽多了:

 

posted on 2019-09-12 10:50  不想睡觉的koala  阅读(131)  评论(0编辑  收藏  举报