3
一个上升,另一个下降
介绍 在这个挑战中,您的任务是确定给定的数字序列是否可以分为两个子序列,其中一个在增加,另一个在减少。例如,考虑序列8 3 5 5 4 12 3。它可以分为两个子序列,如下所示: 3 5 5 12 8 4 3 第一行的子序列增加,第二行的子序列减少。此外,您应该有效地执行此任务。 输入项 您的输入是一个非空L的整数列表,范围在0到99999(含)之间。它以您的语言的本机格式给出,或仅由空格分隔。 输出量 如果L可以分解为递增和递减子序列,则输出为真值,否则为假值。子序列不必严格增加或减少,它们中的任何一个都可以是空的。 规则和奖金 您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。此外,在此挑战中禁止强行使用:您的程序必须在输入长度内以多项式时间运行。 您不需要实际返回这两个子序列,但是这样做有-20%的奖金。为了使奖金更容易以静态类型的语言申领,可以为伪造的实例返回一对空列表。 测试用例 input -> None以错误输入和input -> inc dec真实输入的格式给出。这里只给出一对可能的子序列。可能还有更多。 [4,9,2,8,3,7,4,6,5] -> None [0,99999,23423,5252,27658,8671,43245,53900,22339] -> None [10,20,30,20,32,40,31,40,50] -> None [49,844,177,974,654,203,65,493,844,767,304,353,415,425,857,207,871,823,768,110,400,710,35,37,88,587,254,680,454,240,316,47,964,953,345,644,582,704,373,36,114,224,45,354,172,671,977,85,127,341,268,506,455,6,677,438,690,309,270,567,11,16,725,38,700,611,194,246,34,677,50,660,135,233,462,777,48,709,799,929,600,297,98,39,750,606,859,46,839,51,601,499,176,610,388,358,790,948,583,39] -> None [0,1,2,3,4] -> [0,1,2,3,4] [] [4,3,2,1,0] -> [] [4,3,2,1,0] …