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