我有两个堆栈。一个堆栈为空,另一个堆栈包含数字列表。我们需要分离偶数,以便一个堆栈包含偶数,而另一个堆栈仅包含奇数。我找不到O(n)或O(nlogn)-时间复杂度和O(1)-空间复杂度的最佳解。请帮忙。
答案 0 :(得分:3)
二次方方法。让堆栈A包含值,而B为空。
伪代码:
while not A.Empty:
x = A.Pop
if IsOdd(x):
while not B.Empty and IsEven(B.Peek):
A.Push(B.Pop)
B.Push(x)
while not B.Empty and IsEven(B.Peek):
A.Push(B.Pop)
现在A包含偶数项,B包含奇数项。