• 剑指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 };
  • 相关阅读:
    轻配置 Vim
    PHP 使用 wkhtmltopdf/image 把HTML页面转换成 PDF/image 文件
    使用 Mailgun 实现 带附件的Email 发送功能
    LinkedIn 第三方登录(JavaScript SDK)
    react学习2
    前端面试题
    react学习
    前端面试-字符串-逆序-间隔
    前端文件上传相关知识
    js原型prototype问题
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6934629.html
Copyright © 2020-2023  润新知