划分为增加的子序列
规格 这个挑战很容易说明:您的输入是一个非负整数的非空数组,您的任务是将其划分为尽可能少的递增子序列。更正式地讲,如果输入数组是A,则输出是一个数组数组B,使得: 每个阵列B形成A不相交(不一定是连续的)子序列的分区。在归纳法上,这意味着要么B是包含的单例数组,要么是的A第一个元素B是的子序列,A其余部分形成的分区,A并且删除了该子序列。 B(不一定严格)增加每个数组。 中的数组数量B最少。 输入和输出都可以采用您语言的本机数组格式。请注意,可能有几个正确的输出。 例 考虑输入数组A = [1,2,1,2,5,4,7,1]。一种可能的输出是B = [[1],[1,2,4,7],[1,2,5]]。从此图可以明显看出分区条件: A 1 2 1 2 5 4 7 1 B[0] 1 B[1] 1 2 4 7 B[2] 1 2 5 同样,每个数组都在B增加。最后,A由于不能分为两个递增的子序列,因此的长度B也很短。因此,这是有效的输出。 规则和计分 您可以编写函数或完整程序。最低字节数获胜,并且不允许出现标准漏洞。没有时间限制,但是您应该在提交所有测试用例之前对解决方案进行评估。 测试用例 仅显示一个可能的输出,但可能有多个有效选项。特别地,结果中数组的顺序无关紧要(但每个单独的数组应按递增顺序排列)。 [0] -> [[0]] [3,5,8] -> [[3,5,8]] [2,2,2,2] -> [[2,2,2,2]] [1154,1012,976,845] -> [[845],[976],[1012],[1154]] [6,32,1,2,34,8] …