我们有2N
整数序列。我们需要确定是否可以选择N
整数的子序列,这样选择的序列和未选择的序列将是相同的。
例如,1 2 1 2 3 3
可能,但1 2 3 3 1 2
不可能。
任何想法如何解决?
答案 0 :(得分:0)
由于您没有提供任何代码或语言来解决这个问题,我能做的最好的就是给你一个伪代码:
我们的想法是,无论您是否已在下面发布的方法中的一个或另一个中添加了一个数字,将填充两个堆栈:
if (stack1 has N) {
add N to stack2
} else {
add N to stack1
}
然后从每个堆栈中取出每个数字
function/method isItPossible(arrayWithSequence) {
//Here add the numbers in the stacks
while (both stacks are not empty) {
if (lastNumberInStack1 is different from lastNumberInStack2) {
return false
}
}
return true
}
然后致电
print(isItPossible(yourSequenceHere));
根据是否可能,应该打印true
或false
。