【发布时间】:2017-07-07 23:54:38
【问题描述】:
http://www.geeksforgeeks.org/segregate-even-and-odd-numbers/我在查找面试问题时遇到了这个有趣的问题。该算法看起来很简单,但我想知道是否可以在不使用任何额外空间的情况下保持偶数和奇数的顺序,同时仍然保持 O(n) 的时间复杂度。
例如
输入:{12、34、45、9、8、90、3}
输出:{12、34、8、90、45、9、3}
编辑:如果没有额外的空间是不可能的,它可以与仅重新排列的整数一起工作吗?由于交换只能发生在数组中
【问题讨论】:
-
“不使用任何额外空间”是什么意思。即使您提到的代码也使用了额外的空间(
left和right)。您的意思是“仅使用 O(1) 空间”? -
不使用任何其他数组,将偶数存储在一个数组中,将奇数存储在另一个数组中,然后将它们组合起来,问题就很简单了。
-
好的,这意味着只使用常量空间。
标签: arrays algorithm sorting partition