调整数组顺序使奇数位于偶数前面

  • 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
  • 由于相对位置不变,先计算出奇数的数量,求出结果数组下标分界点,之后按序填入即可,需要额外数组存储
  • C++ 代码
class Solution {
public:
    void reOrderArray(vector<int> &array) {
        if(array.empty()) return;
        int *tmp = new int[array.size()];
        int count = 0;
        for(int i=0;i<array.size();i++)
        {
            tmp[i]=array[i];
            if(array[i]&0x1==1) count++;
        }
        int even=0;
        int odd=count;
         for(int i=0;i<array.size();i++)
        {
            if(tmp[i]&0x1==1) array[even++]=tmp[i];
             else array[count++]=tmp[i];
        }
        delete [] tmp;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。