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,因为下一个数字依赖于上一个数字,第二层循环对上一个数字进行遍历,统计每一个数字出现的次数,然后插入到字符串中,这种方法虽然时间复杂度比暴力法高,但看起来舒爽多了: