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;
        }
    };
  • 相关阅读:
    项目经验分享(上)
    socket.io实现在线群聊
    socket.io中文文档
    常用的Sublime Text插件及安装方法
    常用的Atom插件
    atom及其插件activate-power-mode下载安装
    jeesite快速开发平台
    js权威指南
    hexSHA1散列加密解密(不可逆)
    腾讯云企业邮箱
  • 原文地址:https://www.cnblogs.com/hellosnow/p/12077902.html
Copyright © 2011-2022 走看看