题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解题思路
一开始把题目看错了,没有看到要求相对位置不变,因此使用了类似于快排的方法来做(这个也应该是一个可能的考点)。由于要求相对位置不变,我的想法很简单,将奇数和偶数分别按顺序存储在两个vector中,再修改原始vector数组中的数字,但这样就占用了存储空间。
1 | class Solution { |
在牛客网上看到一个短小精悍的代码,有点类似冒泡排序。1
2
3
4
5
6
7
8
9
10
11class 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]);
}
}
}
};
多学学!!同时,尽量熟悉使用vector来答题。