题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

思路

这道题有多种方法,最容易想到的就是另外再开一个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--;
        }
    }
};