面试题:偶数和奇数元素在偶数和奇数位置(保持元素顺序)

时间:2019-07-16 19:24:48

标签: arrays algorithm time-complexity space-complexity

在采访中提出以下问题:

给出一个数组。任务是将数组布置为:

  • 奇数元素占据奇数位置,偶数元素占据偶数位置。

-元素的顺序必须保持不变。

  • 考虑从零开始的索引。
  • 根据条件打印后,如果有剩余,则按原样打印剩余的元素。

示例:

输入: Arr = 2、4、6、8、10、1、3、5、7、9

输出: Arr = 2,1,4,3,6,5,8,7,10,9

是否存在没有恒定空间(即O(1))且在O(N)时间内的解决方案?

1 个答案:

答案 0 :(得分:0)

如果存在n / 2个偶数元素和n / 2个奇数元素,则解决方案可能非常简单,请将“偶数指针”和“奇数指针”保留到新数组中的第一个偶数空位置,以及第一个奇数空放置在新数组上。不仅仅是遍历旧数组,将元素填充在正确的位置,并且不要忘记将指针增加2; 如果奇数元素的数量比偶数元素的数量要差-您可以发现O(n)处有多少个偶数和奇数,那么问题又很简单。