题解 | #调整数组顺序使奇数位于偶数前面(一)#

调整数组顺序使奇数位于偶数前面(一)

https://www.nowcoder.com/practice/ef1f53ef31ca408cada5093c8780f44b

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param array int整型vector
     * @return int整型vector
     */
     //插入排序的变体;注意不能用交换着排序(冒泡变体),会改变相对顺序
     //方法:找到第一个偶数,然后从该偶数开始向后遍历,遇到的奇数全部转移到这个偶数之前
    vector<int> reOrderArray(vector<int>& array) {
        //找到第一个偶数
        int evenHead = array.size();
        for(int i=0;i<array.size();i++){
            if(array[i]%2==0){
                evenHead = i;
                break;
            }
        }
        //若没有偶数,则直接返回
        //偶数后面的所有奇数依次插入到该偶数前面,同时每次删除一个奇数
        //iterator insert(pos,elem)	在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
        for(int i=evenHead;i<array.size();i++){
            if(array[i]%2==1){
                int temp = array[i];
                array.erase(array.begin()+i);
                array.insert(array.begin()+evenHead,temp);
                evenHead++;
            }
        }
        return array;
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
码砖:求职岗位要突出,一眼就能看到,教育背景放到最后,学校经历没那么重要,项目要重点突出
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务