使用两个堆栈将偶数奇数分开

时间:2020-01-22 07:16:04

标签: algorithm data-structures stack

我有两个堆栈。一个堆栈为空,另一个堆栈包含数字列表。我们需要分离偶数,以便一个堆栈包含偶数,而另一个堆栈仅包含奇数。我找不到O(n)或O(nlogn)-时间复杂度和O(1)-空间复杂度的最佳解。请帮忙。

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包含奇数项。