题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路
思路:开两个队列,分别为queue1和queue2;轮询数组,把奇数放进queue1,把偶数放进queue2。 然后把queue1和queue2放进vector
示例
输入:123456 输出:135246
代码
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
class Solution {
public:
// 思路:开两个队列,分别为queue1和queue2;轮询数组,把奇数放进queue1,把偶数放进queue2。
// 然后把queue1和queue2放进vector
void reOrderArray(vector<int> &array) {
queue<int> odd,even;
for (int i = 0; i < array.size() ; ++i) {
if (array[i]%2 == 0)
even.push(array[i]);
else if (array[i]%2 == 1)
odd.push(array[i]);
}
int number(0);
while (!odd.empty()){
array[number] = odd.front();
odd.pop();
number ++ ;
}
while (!even.empty()){
array[number] = even.front();
even.pop();
number ++ ;
}
}
};
int main(){
vector<int> test = {1,2,3,4,5,6};
Solution re;
re.reOrderArray(test);
for (int i = 0; i < test.size() ; ++i) {
cout << test[i] ;
}
return 0;
}