如这个问题所述:
由David Morgan-Mar设计的Dropsort是线性时间“排序算法”的一个示例,该算法可以生成一个列表,该列表实际上是经过排序的,但仅包含一些原始元素。任何不小于其最大元素数量的元素都将从列表中删除并丢弃。
要使用他们的测试用例之一,请输入{1, 2, 5, 4, 3, 7}
yields {1, 2, 5, 7}
as 4
和as ,3
因为它们小于先前的“ sorted”值5
。
我们不想“排序”算法,我们希望它们成为真正的交易。因此,我希望您编写一个程序,给定一个数字列表,该程序输出一个DropSorted列表列表(作为完整的排序算法,我们需要合并这些列表,但是 之前已经完成了合并两个排序列表的操作,并且要求您再次执行此操作几乎是在问两个问题,因此,这个问题专门是我们完整的DropSort的“拆分”步骤。
但是,清单的安排和内容至关重要。程序的输出必须等同于DropSort的输出,然后是丢弃值的DropSort的输出,依此类推,直到只有一个排序链列表为止。同样,借用现有的测试套件(并添加另外两个):
Input -> Output
{1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}}
{10, -1, 12} -> {{10, 12}, {-1}}
{-7, -8, -5, 0, -1, 1} -> {{-7, -5, 0, 1}, {-8, -1}}
{9, 8, 7, 6, 5} -> {{9}, {8}, {7}, {6}, {5}}
{10, 13, 17, 21} -> {{10, 13, 17, 21}}
{10, 10, 10, 9, 10} -> {{10, 10, 10, 10}, {9}} //Note equivalent values aren't dropped
{5, 4, 3, 8, 7, 6} -> {{5, 8}, {4, 7}, {3, 6}}
{0, 2, 5, 4, 0, 7} -> {{0, 2, 5, 7}, {4}, {0}}
您可以假定输入为非空。
这是代码高尔夫,因此适用标准规则!
{3,4,5,3,4,5,3,4,5}
导致{{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
吗?