【剑指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--;
        }
    }
};

 

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务