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;
        }
    };
  • 相关阅读:
    Uncaught TypeError: Cannot read property 'PRINT_INIT' of undefined user:100
    haproxy 负载elasticsearch 切换
    高德地图-展示多个信息窗口
    elasticsearh 中每个节点中需要有相同的插件
    haporxy 负载elasticsearch
    AngularJS之ng-if指令
    文件上传并展示上传文件
    json编解码
    Grok 正则捕获
    logstash date插件介绍
  • 原文地址:https://www.cnblogs.com/hellosnow/p/12077902.html
Copyright © 2011-2022 走看看