【剑指offer】调整数组顺序使奇数位于偶数前面
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路
这道题有多种方法,最容易想到的就是另外再开一个vector数组,然后遍历原数组,将奇数存在新数组前面,偶数存后面;看了讨论之后发现有个大神的思路超简单,值得借鉴,就是使用迭代器遍历,把数组中的偶数删除然后插到数组尾部。
代码
class Solution {
public:
void reOrderArray(vector<int> &array) {
int len = array.size();
vector<int>::iterator it = array.begin();//迭代器it指向数组中的第一个元素
while(len){
if(!(*it%2)){
int t = *it;//*it代表数值
it = array.erase(it);
array.push_back(t);
}
else{
it++;
}
len--;
}
}
};