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

    题目描述

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
    思路:先找到第一个偶数,位置为i,然后从i + 1开始找第一个奇数,将这个奇数保存起来,将[i ,  j - 1]这个区间的元素整体后移一个元素单位,那么第i 个位置就空出来了,然后将第j个位置保存好的奇数拷贝到第i个位置。重复执行操作就得到答案。
    class Solution {
    public:
        bool isEven(int num){
            if(num % 2 == 0){
                return true;
            }
            return false;
        }
        void reOrderArray(vector<int> &array) {
            if(array.size() == 0){
                return;
            }
           
            int i = 0;
             while(i < array.size()){
                 for(i;i < array.size();++i){
                     if(isEven(array[i])){
                         break;
                     }
                 }
                 int j = i + 1;
                 for(j;j < array.size();++j){
                     if(!isEven(array[j])){
                         break;
                     }
                 }
                 if(j < array.size()){
                     int tmp = array[j];
                     for(int k = j - 1;k >= i;--k){
                         array[k + 1] = array[k];
                     }
                     array[i] = tmp;  
                 }
                 else{
                     break;
                 }
            }
        }
    };
  • 相关阅读:
    proxy
    javascript作用域链
    javascript技巧
    for of
    ES6模块与CommonJS模块有什么区别?
    DOM
    defer和async的区别
    浏览器如何解析css选择器?
    你是如何理解Vue的响应式系统的
    信息安全系统设计基础第十二周学习总结
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7466075.html
Copyright © 2011-2022 走看看