数字列表被称为单调递增(或不递减),因为每个元素都大于或等于它之前的元素。
例如, 1, 1, 2, 4, 5, 5, 5, 8, 10, 11, 14, 14
单调增加。
给定正整数的单调递增列表,该整数具有任意数量的空白点,表示为 ?
,用正整数填充空点,以使列表中存在尽可能多的唯一整数,但它保持单调递增。
可能有多种方法可以实现此目的。任何有效。
输出结果列表。
例如,如果输入是
?, 1, ?, 1, 2, ?, 4, 5, 5, 5, ?, ?, ?, ?, 8, 10, 11, ?, 14, 14, ?, ?
确保没有空白点的列表将单调增加
1, 1, 2, 4, 5, 5, 5, 8, 10, 11, 14, 14
您的任务是为每个整数分配正整数
?
以使列表中不同整数的数量最大化,同时保持其不变。一项无效的作业是
1, 1, 1, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 8, 10, 11, 14, 14, 14, 14, 14
因为,尽管它不减量,但只比输入多一个唯一的整数,即
3
。在此示例中,可以插入六个唯一的正整数并保持列表不变。
几种可能的方法是:1, 1, 1, 1, 2, 3, 4, 5, 5, 5, 6, 7, 8, 8, 8, 10, 11, 12, 14, 14, 15, 16 1, 1, 1, 1, 2, 3, 4, 5, 5, 5, 5, 6, 6, 7, 8, 10, 11, 13, 14, 14, 20, 200
这些(以及许多其他)中的任何一个都是有效的输出。
所有空白点都必须填写。
可以插入的整数没有上限。如果以科学计数法打印非常大的整数也可以。
零不是正整数,切勿插入。
在地方?
,你可以使用任何一致的值不是一个正整数,如0
,-1
,null
,False
,或""
。
以字节为单位的最短代码获胜。
更多例子
[input]
[one possible output] (a "*" means it is the only possible output)
2, 4, 10
2, 4, 10 *
1, ?, 3
1, 2, 3 *
1, ?, 4
1, 2, 4
{empty list}
{empty list} *
8
8 *
?
42
?, ?, ?
271, 828, 1729
?, 1
1, 1 *
?, 2
1, 2 *
?, 3
1, 3
45, ?
45, 314159265359
1, ?, ?, ?, 1
1, 1, 1, 1, 1 *
3, ?, ?, ?, ?, 30
3, 7, 10, 23, 29, 30
1, ?, 2, ?, 3, ?, 4
1, 1, 2, 3, 3, 3, 4
1, ?, 3, ?, 5, ?, 7
1, 2, 3, 4, 5, 6, 7 *
1, ?, 3, ?, 5, ?, ?, 7
1, 2, 3, 4, 5, 6, 7, 7
1, ?, ?, ?, ?, 2, ?, ?, ?, ?, 4, ?, 4, ?, ?, 6
1, 1, 1, 1, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 6
98, ?, ?, ?, 102, ?, 104
98, 99, 100, 101, 102, 103, 104 *