题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
题目来源:牛客网
问题分析
这道题其实不是什么难题,即使要求了稳定性(不能用不稳定的快速划分来做)也不难。但是如果卡时间或空间,就是有点难度的了。
1. 时间限制,要求O(n)时间内做完;
2. 空间限制,要求O(1)的空间。
首先,时间限制的话,就否定了绝大多数排序算法了,不过计数排序还是可以做滴,哈哈。不过计数排序的空间复杂度也是O(n),还不如直接开两个数组分别来存奇数和偶数来得直接明了。比如:
class Solution {
public:
void reOrderArray(