zoukankan      html  css  js  c++  java
  • 剑指offer之【调整数组顺序使奇数位于偶数前面】

    题目要求:

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

    解题方法:

      方法一:时间复杂度O(n^2)

        最容易想到:从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位;

      方法二:时间复杂度O(n)

        重新建立一个向量,然后进行两次扫描:第一次扫描奇数,第二次扫描偶数,完毕,不废话,直接上代码:

     1 class Solution{
     2 public:
     3     void reOrderArray(vector<int> &array){
     4         int len = array.size();
     5         vector<int> vec(array.begin(),array.end());
     6         int l = 0;
     7         for(int x: vec){
     8             if(x%2==1){
     9                 array[l++] = x;
    10             }
    11         }
    12         for(int y : vec){
    13             if(y%2 == 0){
    14                 array[l++] = y;
    15             }
    16         }
    17     }
    18 };
  • 相关阅读:
    两个有序数组,找第k小的数//未完
    top详解--查看cpu及内存使用情况
    查看IO情况
    hadoop常用的调优参数
    zookeeper 的 javaAPI
    MapReduce优化
    mySQL索引数据数据结构 B+ 树
    P2670 [NOIP2015 普及组] 扫雷游戏
    P1887 乘积最大3
    1299. 五指山
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6934629.html
Copyright © 2011-2022 走看看