题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路1:
class Solution {
public:
void reOrderArray(vector<int> &array) {
int len=array.size();
int temp;
for(int i=0;i<len;)
{
if(array[i]%2==0)
{
temp=array[i];
array.push_back(temp);//是偶数插入到数组的最后
array.erase(array.begin()+i);//擦除原来的偶数
len--;//待检查的数组长度-1
}
else
i++;
}
}
};
思路2:
定义两个数组,一个存储奇数一个存储偶数
class Solution {
public:
void reOrderArray(vector<int> &array) {
vector<int>ji;
vector<int>ou;
for(auto i=0;i<array.size();i++)
{
if(array[i]%2==1)
ji.push_back(array[i]);
else
ou.push_back(array[i]);
}
for(auto j=0;j<ou.size();j++)
{
ji.push_back(ou[j]);
}
array=ji;
}
};