码迷,mamicode.com
首页 > 编程语言 > 详细

剑指offer之调整数组顺序使奇数位于偶数前面

时间:2017-06-02 18:59:31      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:public   建立   偶数   新建   个数   时间复杂度   数位   off   输入   

题目要求:

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

解题方法:

  方法一:时间复杂度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 };

 

剑指offer之调整数组顺序使奇数位于偶数前面

标签:public   建立   偶数   新建   个数   时间复杂度   数位   off   输入   

原文地址:http://www.cnblogs.com/wangshujing/p/6934629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!