题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路
- 先将数组遍历一次,然后记录奇数的个数(因为奇数在前,偶数在后)
2.将数组拷贝出一份副本,然后遍历拷贝的副本
3.若是奇数原数组从第一个位置开始覆盖数据,否则从奇数个数的位置开始覆盖数据
Java代码实现
public void reOrderArray(int [] array) {
int oddCount = 0;
int evenCount = 0;
int[] array2 = array.clone();
for (int i = 0; i < array.length; i++) {
if(array[i]%2 == 1){
oddCount++;
}
}
for (int i = 0; i < array2.length; i++) {
if(array2[i]%2 == 1){
array[evenCount++] = array2[i];
}else{
array[oddCount++] = array2[i];
}
}
}
Golang代码实现
func reOrderArray(nums []int){
nums2 := make([]int,len(nums))
copy(nums2,nums)
oddCount := 0
evenCount := 0
for i:=0; i< len(nums); i++ {
if nums[i]%2 == 1{
oddCount++;
}
}
for i:=0; i<len(nums2);i++{
if nums2[i]%2 == 0{
nums[oddCount] = nums2[i]
oddCount++
}else {
nums[evenCount] = nums2[i]
evenCount++
}
}
}
有疑问加站长微信联系(非本文作者)