您应该编写一个程序或函数,该程序或函数接收一个不同整数的列表作为输入,并输出或返回以下倒置数字金字塔中输入数字的出现次数。
在每个步骤中,从原始列表开始,我们创建一个新的列表,其中包含每对相邻数字的最大值(例如5 1 2 6
变为5 2 6
)。当列表中只有一个数字时,我们停止。
完整的金字塔5 1 2 6
就是
5 1 2 6
5 2 6
5 6
6
结果发生的次数分别3 1 2 4
为5 1 2 6
。
输入项
- 无重复的一个或多个整数的列表。(例如
1 5 1 6
无效。)
输出量
- 正整数列表。
i
列表的第th个元素是i
金字塔中第th个输入数字的出现次数。
例子
输入=>输出
-5 => 1
8 4 => 2 1
5 9 7 => 1 4 1
1 2 3 9 8 6 7 => 1 2 3 16 3 1 2
6 4 2 1 3 5 => 6 4 2 1 3 5
5 2 9 1 6 0 => 2 1 12 1 4 1
120 5 -60 9 12 1 3 0 1200 => 8 2 1 3 16 1 4 1 9
68 61 92 58 19 84 75 71 46 69 25 56 78 10 89 => 2 1 39 2 1 27 6 5 1 6 1 2 14 1 12
这是代码高尔夫球,因此最短的条目将获胜。
难题:您能O(n*log n)
及时解决问题吗?