在数独游戏中,许多玩家喜欢“铅笔”每个方格中可能出现的数字:
上面的行可以表示为数组:
[[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [1,2,4], [8]]
现在,请注意只有一个地方4
可以去。这有效地使我们将上面的列表简化为:
[[1,2,9], [6], [5], [7], [1,2,9], [1,2,9], [3], [4], [8]]
这项挑战的目的是列出排列中可能的数字,并推断出可以消除的可能性。
再举一个例子,假设您具有以下可能性:
[[0,1,3], [0,2,3], [1,2], [1,2]]
最后两个位置必须用1和2填充。因此,我们可以从数组的前两个元素中删除那些可能性:
[[0,3], [0,3], [1,2], [1,2]]
再举一个例子:
[[0,1,2,3], [0,2], [0,2], [0,2]]
它不可能从上述可能性构造排列,因为只有1两个位置1
和3
,和你想返回一个空数组。
您需要输入可能性列表,并在消除最大可能性之后输出其余可能性。
- 如果不可能使用特定的数组,则需要返回一个空数组,或者返回其中一个子数组为空的数组。
- 您可能会假设数组的格式正确,并且至少包含1个元素。
- 给定大小数组
N
,您可以假设子数组中的数字始终在范围内[0:N)
,并且N <= 10
- 您可能无法假设从
0
到的每个数字N-1
都会出现 - 您可以假设单个子数组中的数字是唯一的。
- 如果子数组仅包含一个可能性,则可以在数组中或单独表示该可能性。
[[1],[2],[0]]
,[1,2,0]
,[[1,2],0,[1,2]]
都是有效的。 - 您可以以合理的字符串格式或列表/数组格式接受数组。
- 子数组可以按任何顺序排列。
- 不用处理参差不齐的数组,可以使用填充空白位置
-1
。
测试用例
[[0]] -> [[0]]
[[1],[0]] -> [[1],[0]]
[[1],[1]] -> []
[[1],[0,1]] -> [[1],[0]]
[[0,1,2],[1,2],[1,2]] -> [[0],[1,2],[1,2]]
[[0,1],[1,2],[0,2]] -> [[0,1],[1,2],[0,2]]
[[2,1],[1,2],[1,2]] -> []
[[0,3],[2,1],[3,0],[3,2]] -> [[0,3],[1],[0,3],[2]]
[[0,1],[0,1],[2,3],[2,3,0]] -> [[0,1],[0,1],[2,3],[2,3]]
[[0,1],[0,3],[3,2],[0]] -> [[1],[3],[2],[0]]
[[3,5,2],[0,2,4],[4,0],[0,1,3,5],[2,1],[2,4]] -> [[3,5],[0,2,4],[4,0],[3,5],[1],[2,4]]
[[6,9,8,4],[4,5],[5,3,6],[3,8,6,1,4],[3,1,9,6],[3,7,0,2,4,5],[9,5,6,8],[6,5,8,1,3,7],[8],[8,0,6,2,5,6,3]] -> [[6,9,4],[4,5],[5,3,6],[3,6,1,4],[3,1,9,6],[0,2],[9,5,6],[7],[8],[0,2]]
[[3,5,0],[5,7],[5,1,2],[1,3,0],[5,3],[5,0],[5,3,7,8,0,6],[7,5,0,1,8],[1,0,8],[0,6]] -> []
[[9,0,2,3,7],[0,7,6,5],[6,9,4,7],[9,1,2,3,0,5],[2,8,5,7,4,6],[6,5,7,1],[5,9,4],[5,9,3,8,1],[5,0,6,4],[0,7,2,1,3,4,8]] -> [[9,0,2,3,7],[0,7,6,5],[6,9,4,7],[9,1,2,3,0,5],[2,8,5,7,4,6],[6,5,7,1],[5,9,4],[5,9,3,8,1],[5,0,6,4],[0,7,2,1,3,4,8]]
[[2,6,0],[0,4,3],[0,6,2],[0,7],[0,9,2,3,6,1,4],[1,7,2],[2,7,8],[8,6,7],[6,5,2,8,0],[5,8,1,4]] -> [[2,6,0],[3],[0,6,2],[0,7],[9],[1],[2,7,8],[8,6,7],[5],[4]]
[[8],[8,0,6,5,7,2,4,1],[8,6,9,3,5,0,7],[3,9,1,0],[9],[9,2,6],[2,8,3],[3,1,6,8,2],[6],[6,4,5,3,0,7]] -> [[8],[5,7,4],[5,7],[0],[9],[2],[3],[1],[6],[4,5,7]]
[[8,1,0],[5,8,7,6,2,0],[6,8,2],[2,4,0,9],[4,1,7,3,6,8],[8,1],[8,0,3],[0,8,2],[0,8,3],[1,8,0]] -> []
这是一个代码问题,因此请使您的答案尽可能短!
任何大于9的数字?
—
Leaky Nun
你并不需要支持号码大于9
—
弥敦道美林
我可以返回子数组中的重复项吗?
—
Leaky Nun
@LeakyNun不。子数组只能包含唯一元素。
—
内森·美林
我认为您在第四个测试用例中有一些错误;子列表之一是双括号。
—
TheBikingViking