Algorithm 使用两个堆栈分离奇偶数

Algorithm 使用两个堆栈分离奇偶数,algorithm,data-structures,stack,Algorithm,Data Structures,Stack,我有两层。一个堆栈为空,另一个堆栈包含数字列表。我们需要分离奇偶数,这样一个堆栈包含偶数,而另一个堆栈只包含奇数。我无法找到O(n)或O(nlogn)——时间复杂度和O(1)——空间复杂度的最优解。请帮忙 二次方法。如果堆栈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.

我有两层。一个堆栈为空,另一个堆栈包含数字列表。我们需要分离奇偶数,这样一个堆栈包含偶数,而另一个堆栈只包含奇数。我无法找到O(n)或O(nlogn)——时间复杂度和O(1)——空间复杂度的最优解。请帮忙

二次方法。如果堆栈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包含奇数项。

二次方法。如果堆栈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包含奇数项。

我怀疑这可能在O(n)中完成。在最坏的情况下-是的,可能。你能分享你的方法吗@MBO(
O(logn)
no way sequential(堆栈是顺序访问)。
O(n)
您甚至可以得到最初的空堆栈,其中包含一种选定风味的所有数字,但您只能保留互补风味中的O(1)。另请参见:。
无法使用O(nlogn)找到任何最优解决方案
至少在最坏的情况下,尝试证明问题需要O(n²)个步骤。我怀疑这可能需要O(n²)个步骤。在最坏的情况下-是的,可能。你能分享你的方法吗@MBO(
O(logn)
no way sequential(堆栈是顺序访问)。
O(n)
您甚至可以得到最初的空堆栈,其中包含一种选定风味的所有数字,但您只能保留互补风味中的O(1)。另请参见:。
无法使用O(nlogn)找到任何最优解决方案
至少在最坏的情况下,尝试证明问题需要O(n²)个步骤。