调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
class Solution {
public:
void reOrderArray(vector<int> &array) {
vector<int>::iterator even = array.begin();
int size = array.size();
while(size){
if (*even % 2 == 0){
int tmp = *even;
even = array.erase(even);
array.push_back(tmp);
}
else
even++;
size--;
}
}
};
class Solution {
public:
void reOrderArray(vector<int> &array) {
int num = array.size();
for (int i=0; i<num;i++){
int temp;
if ((array[i]%2)==0){
for (int j = i; j<num;j++){
if ((array[j]%2)==1){
temp = array[j];
while(j > i){
array[j] = array[j-1];
j--;
}
array[j] = temp;
i++;
}
}
break;
}
}
}
};
*/
class Solution {
public:
void reOrderArray(vector<int> &array){
vector<int> array_temp;
vector<int>::iterator ib1,ie1;
ib1 = array.begin();
for(;ib1 != array.end();){
if (*ib1 % 2 == 0){
array_temp.push_back(*ib1);
ib1 = array.erase(ib1);
}
else{
ib1++;
}
}
vector<int>:: iterator ib2,ie2;
ib2 = array_temp.begin();
ie2 = array_temp.end();
for(;ib2 != ie2;ib2++){
array.push_back(*ib2);
}
}
};
class Solution {
public:
void reOrderArray(vector<int> &array) {
vector<int> res;
for(int i = 0; i < array.size(); i++)
{
if(array[i] % 2 == 1)
res.push_back(array[i]);
}
for(int i = 0; i < array.size(); i++)
{
if(array[i] % 2 == 0)
res.push_back(array[i]);
}
//array.swap(res);
array = res;
}
};
class Solution {
public:
void reOrderArray(vector<int> &array){
for (int i = 0; i < array.size(); i++){
for (int j = array.size() -1; j>i;j--){
if (array[j]%2 == 1 && array[j-1]%2==0){
swap(array[j],array[j-1]);
}
}
}
}
};
*/Python 解法
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
odd,even = [],[]
for i in array:
odd.append(i) if i%2 == 1 else even.append(i)
return odd+even
class Solution:
def reOrderArray(self,array):
return sorted(array,key=lambda c : c%2,reverse = True)