zoukankan      html  css  js  c++  java
  • 调整数组顺序使奇数位于偶数前面

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

    这道题如果没有相对位置的要求的话,可以让两个指针i和j分别指向头和尾,指针i从前往后走,当指针i指向偶数时,停下来;指针j从前往后走,当指针j指向奇数时,停下来,然后交换两个指针所指向的数,这样就可以把偶数换到后面,奇数换到前面。当i不再小于j时,整个过程停止。但是这个方法会使数字的相对位置改变。

    c++代码如下:

     1 class Solution {
     2 public:
     3     void reOrderArray(vector<int> &array) {
     4         int i = 0, j = array.size() - 1;
     5         while(i < j){
     6             while(array[i] % 2 == 1) i++;
     7             while(array[j] % 2 == 0) j--;
     8             swap(array[i], array[j]);
     9         }
    10     }
    11 };

    如果不改变相对位置,可以用一个数组来存放数字,先存所有的奇数,再存所有的偶数。

    c++代码如下:

    class Solution {
    public:
        void reOrderArray(vector<int> &array) {
            vector<int> res;
            for(auto x : array){
                if(x % 2 == 1) res.push_back(x);
            }
            for(auto x : array){
                if(x % 2 == 0) res.push_back(x);
            }
            array = res;
        }
    };
  • 相关阅读:
    03-数据结构(C语言版)
    01C语言基础(二)
    python杂项
    mmdetection源码阅读
    建立文件软连接
    python将test01文件夹中的文件剪切到test02文件夹中
    Probabilistic two-stage detection
    Activate-or-Not:learning-customized-activation
    CenterNet和CenterNet2笔记
    OpenCV视频检测人脸
  • 原文地址:https://www.cnblogs.com/hellosnow/p/12077902.html
Copyright © 2011-2022 走看看