题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序。
使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。
数据范围
数组长度 [0,100][0,100]。
数组内元素取值范围 [0,100][0,100]。
样例
输入:[1,2,3,4,5]
输出: [1,3,5,2,4]
解析
使用快排的思想,从左到右找偶数,从右到左找奇数,找到后就交换着俩数,一直循环直到都交换完为止。
代码
C++
class Solution {
public:
void reOrderArray(vector<int> &arr) {
int l = 0, r = arr.size() - 1;
while (l < r) {
while (l < r && (arr[l] & 1)) l ++ ;
while (l < r && !(arr[r] & 1)) r -- ;
swap(arr[l], arr[r]);
}
}
};
Python
class Solution(object):
def reOrderArray(self, arr):
"""
:type array: List[int]
:rtype: void
"""
l, r = 0, len(arr) - 1
while l < r:
while l < r and arr[l] % 2 == 1: l += 1
while l < r and arr[r] % 2 == 0: r -= 1
arr[l], arr[r] = arr[r], arr[l]
GO
func reOrderArray(array []int){
l, r := 0, len(array) - 1
for l < r {
for l < r && array[l] % 2 == 1 {
l ++
}
for l < r && array[r] % 2 == 0 {
r --
}
array[l], array[r] = array[r], array[l]
}
}